Difference between revisions of "PowerPC"

From ReactOS Wiki
Jump to: navigation, search
(PowerPC moved to PowerPC-Old: Remodelling -- Structure it better for the current work)
 
Line 1: Line 1:
 +
== PowerPC Remaining Porting ==
 +
 +
* ReactOS Build Environment (currently only linux-x86)
 +
[http://www.superheterodyne.net/reactos/powerpc/rosbe-ppc.tar.bz2 ReactOS Build Enviornment PPC (linux)]
 +
 +
== It's been a long time coming ==
 +
 +
I've been working on this project for a couple of years now, and thought I'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 I have been working on them in the background, even if it doesn't seem so).
 +
 +
I started porting to learn the deeper bits of OS development.  I've learned a lot.  The rest hopefully will go a bit smoother than what's come up til now.
 +
 +
What's been accomplished:
 +
 +
* I'm totally comfortable and familiar with PPC cpus.  I've 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.
 +
* I've 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
 +
*** Bandit
 +
*** Eagle
 +
*** Grackle
 +
*** 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
 +
** Win32k
 +
** ntdll
 +
** 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 :-)
 +
 +
The old version of this page is here:
 +
 
#REDIRECT [[PowerPC-Old]]
 
#REDIRECT [[PowerPC-Old]]

Revision as of 07:19, 26 October 2007

PowerPC Remaining Porting

  • ReactOS Build Environment (currently only linux-x86)

ReactOS Build Enviornment PPC (linux)

It's been a long time coming

I've been working on this project for a couple of years now, and thought I'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 I have been working on them in the background, even if it doesn't seem so).

I started porting to learn the deeper bits of OS development. I've learned a lot. The rest hopefully will go a bit smoother than what's come up til now.

What's been accomplished:

  • I'm totally comfortable and familiar with PPC cpus. I've 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.
  • I've 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
      • Bandit
      • Eagle
      • Grackle
      • 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
    • Win32k
    • ntdll
    • 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 :-)

The old version of this page is here:

  1. REDIRECT PowerPC-Old