PowerPC Remaining Porting
- ReactOS Build Environment (currently only linux-x86)
- Now checked in as tools/RosBE/RosBE-PPC
It's been a long time coming
Arty has been working on this project for a couple of years now, and thought he'd be done by this point. What's been going on for these years has been a fairly wild ride of frustration, hard work, on and off oversaturation and general hardness.
Tools have stabilized and so has the boot system, so now we can work on the real issues (and Arty has been working on them in the background, even if it doesn't seem so).
Arty started porting to learn the deeper bits of OS development. He's learned a lot. The rest hopefully will go a bit smoother than what's come up til now.
What's been accomplished:
- Arty's totally comfortable and familiar with PPC cpus. He has learned a lot about linker formats and linking, as well.
- Even without ReactOS, lib/ppcmmu is a spiffy minikernel for working in early boot on PowerPC.
- He had learned enough to be confident on the rest. Never give up!
Rest of the plan:
- Keep working in ntoskrnl until we get to the first bootdriver.
- Add MM functions and hook them up to the ppc minikernel.
- Vector remaining interrupt traffic through the minikernel (like the syscall trap, which already exists).
- Finally test out and debug the syscall table generator.
- Revisit the DLL binding stubs if necessary.
- Implement the (now trivial) low level thread support
- Debug boot drivers
- Verify IRQ code (hal)
- Interface with
- Whatever other birds are on PPC boxen
- Pass on device tree to ntoskrnl to use in pnp system
- PReP -> Simple device tree (possibly built from prep residual, otherwise direct PCI query)
- mac -> Transcribe important parts of the ofw device tree (assigned-addresses, slot etc)
- Display hardware
- Probably start with taking over the framebuffer like linux
- I basically know now how this works, so it isn't a huge deal
- The devil is in the details; getting the right info to bootvid and the framebuffer driver
- Run the first user process
- Getting into userland for the first time
- Probably require some adjustment in trap handling code
- FPU state saving (we'll cheat and always enable/always save it for now)
- libstdc++ and g++
- Finish these remaining tools issues (not actually needed yet)
- Macsbug screensaver :-)
|In active development||Intel IA-32 (x86) | AMD64 (x64)|
|In slow development||ARM32 (armv7) | NEC PC-98 (x86) | Xbox (x86)|
|Unmaintained||PowerPC (ppc) | OLPC (x86)|
|Missing ports that Windows has||ARM64 (aarch64) | Intel IA-64 (Itanium) | SGI 320/540 (x86) | DEC Alpha (axp) | MIPS|
|Ideas for new ports||FM Towns (x86) | IBM PS/2 MCA (x86) | PlayStation 4 (x64)|