PowerPC Overview

From OSDev Wiki
Jump to navigation Jump to search

The PowerPC CPU architecture is significantly different from the IA32. Yet still, the architecture of your OS need not differ too much: While the way you address memory on the lowest levels might be different, or the way your SIMD unit operates, you still have a bootloader, a scheduler, a dispatcher, a memory manager etc. etc.

You will be able to transcribe most of the documentation 1:1 to the PowerPC, unless they handle the low levels (interrupt handling, real vs. protected mode etc.).

A good place to get started with PowerPC is via the POWER instruction set manual which can be found here . This document contains a complete documentation of the POWER/PowerPC architecture including MMU and SIMD/Vector extensions.


But CPU docs won't suffice. You also need info on the motherboard / chipset / boot sequence etc. - and that's where it gets tricky, since there is no such thing as "the PowerPC architecture" - Apple doesn't like giving away that information, and there are many other platforms that might or might not be compatible.

A Linux-on-PPC project exists, and is probably a good place to look for PowerPC info...

/usr/src/linux/arch/ppc/boot/prep/head.S
/*
* Boot loader philosophy:
*      ROM loads us to some arbitrary location
*      Move the boot code to the link address (8M)
*      Call decompress_kernel()
*        Relocate the initrd, zimage and residual data to 8M
*        Decompress the kernel to 0
*      Jump to the kernel entry
*            -- Cort
*/

The BIOS in latest Apple Macintosh is named "Open Firmware". Open Firmware was initially a SPARC-stuff targeted at Sun stations. Extension cards and other hardware of the like that are OpenFirmware compliant should carry a Forth-written initialization code in their ROM. I suppose the main boot rom then scan memory for such ROMs and then interpret the FORTH code on them.

PowerPC Emulators