|  | PowerPC emulation status. | 
|  | The goal of this file is to provide a reference status to avoid regressions. | 
|  |  | 
|  | =============================================================================== | 
|  | PowerPC core emulation status | 
|  |  | 
|  | INSN: instruction set. | 
|  | OK => all instructions are emulated | 
|  | KO => some insns are missing or some should be removed | 
|  | ?  => unchecked | 
|  | SPR:  special purpose registers set | 
|  | OK => all SPR registered (but some may be fake) | 
|  | KO => some SPR are missing or should be removed | 
|  | ?  => unchecked | 
|  | MSR:  MSR bits definitions | 
|  | OK => all MSR bits properly defined | 
|  | KO => MSR definition is incorrect | 
|  | ?  => unchecked | 
|  | IRQ:  input signals definitions (mostly interrupts) | 
|  | OK => input signals are properly defined | 
|  | KO => input signals are not implemented (system emulation does not work) | 
|  | ?  => input signals definitions may be incorrect | 
|  | MMU:  MMU model implementation | 
|  | OK => MMU model is implemented and Linux is able to boot | 
|  | KO => MMU model not implemented or bugged | 
|  | ?  => MMU model not tested | 
|  | EXCP: exceptions model implementation | 
|  | OK => exception model is implemented and Linux is able to boot | 
|  | KO => exception model not implemented or known to be buggy | 
|  | ?  => exception model may be incorrect or is untested | 
|  |  | 
|  | Embedded PowerPC cores | 
|  | *** | 
|  | PowerPC 401: | 
|  | INSN  OK | 
|  | SPR   OK 401A1 | 
|  | MSR   OK | 
|  | IRQ   KO partially implemented | 
|  | MMU   OK | 
|  | EXCP  ? | 
|  |  | 
|  | PowerPC 401x2: | 
|  | INSN  OK | 
|  | SPR   OK 401B2 401C2 401D2 401E2 401F2 | 
|  | MSR   OK | 
|  | IRQ   KO partially implemented | 
|  | MMU   OK | 
|  | EXCP  ? | 
|  |  | 
|  | PowerPC IOP480: | 
|  | INSN  OK | 
|  | SPR   OK IOP480 | 
|  | MSR   OK | 
|  | IRQ   KO partially implemented | 
|  | MMU   OK | 
|  | EXCP  ? | 
|  |  | 
|  | To be checked: 401G2 401B3 Cobra | 
|  |  | 
|  | *** | 
|  | PowerPC 403: | 
|  | INSN  OK | 
|  | SPR   OK 403GA 403GB | 
|  | MMU   OK | 
|  | MSR   OK | 
|  | IRQ   KO not implemented | 
|  | EXCP  ? | 
|  |  | 
|  | PowerPC 403GCX: | 
|  | INSN  OK | 
|  | SPR   OK 403GCX | 
|  | MMU   OK | 
|  | MSR   OK | 
|  | IRQ   KO not implemented | 
|  | EXCP  ? | 
|  |  | 
|  | To be checked: 403GC | 
|  |  | 
|  | *** | 
|  | PowerPC 405: | 
|  | Checked: 405CRa 405CRb 405CRc 405EP 405GPa 405GPb 405GPc 405GPd 405GPe 405GPR | 
|  | Npe405H Npe405H2 Npe405L | 
|  | INSN  OK | 
|  | SPR   OK | 
|  | MSR   OK | 
|  | IRQ   OK | 
|  | MMU   OK | 
|  | EXCP  OK | 
|  | Remarks: Linux 2.4 boots (at least 1 proprietary firmware). | 
|  | uboot seems to freeze at boot time. | 
|  | To be checked: 405D2 405D4 405EZ 405LP Npe4GS3 STB03 STB04 STB25 | 
|  | x2vp4 x2vp7 x2vp20 x2vp50 | 
|  |  | 
|  | XXX: find what is IBM e407b4 | 
|  |  | 
|  | *** | 
|  | PowerPC 440: | 
|  | Checked: 440EPa 440EPb 440GXa 440GXb 440GXc 440GXf 440SP 440SP2 | 
|  | INSN  OK | 
|  | SPR   OK | 
|  | MSR   OK | 
|  | IRQ   KO not implemented | 
|  | MMU   ? | 
|  | EXCP  ? | 
|  |  | 
|  | PowerPC 440GP: | 
|  | Checked: 440GPb 440GPc | 
|  | INSN  OK | 
|  | SPR   OK | 
|  | MSR   OK | 
|  | IRQ   KO not implemented | 
|  | MMU   ? | 
|  | EXCP  ? | 
|  |  | 
|  | PowerPC 440x4: | 
|  | Checked: 440A4 440B4 440G4 440H4 | 
|  | INSN  OK | 
|  | SPR   OK | 
|  | MSR   OK | 
|  | IRQ   KO not implemented | 
|  | MMU   ? | 
|  | EXCP  ? | 
|  |  | 
|  | PowerPC 440x5: | 
|  | Checked: 440A5 440F5 440G5 440H6 440GRa | 
|  | INSN  OK | 
|  | SPR   OK | 
|  | MSR   OK | 
|  | IRQ   KO not implemented | 
|  | MMU   ? | 
|  | EXCP  ? | 
|  |  | 
|  | To be checked: 440EPx 440GRx 440SPE | 
|  |  | 
|  | *** | 
|  | PowerPC 460: (disabled: lack of detailed specifications) | 
|  | INSN  KO | 
|  | SPR   KO | 
|  | MSR   KO | 
|  | IRQ   KO | 
|  | MMU   KO | 
|  | EXCP  KO | 
|  |  | 
|  | PowerPC 460F: (disabled: lack of detailed specifications) | 
|  | INSN  KO | 
|  | SPR   KO | 
|  | MSR   KO | 
|  | IRQ   KO | 
|  | MMU   KO | 
|  | EXCP  KO | 
|  |  | 
|  | *** | 
|  | PowerPC e200: (not implemented) | 
|  | INSN  KO | 
|  | SPR   KO | 
|  | MSR   KO | 
|  | IRQ   KO | 
|  | MMU   KO | 
|  | EXCP  KO | 
|  |  | 
|  | *** | 
|  | PowerPC e300: (not implemented) | 
|  | INSN  KO | 
|  | SPR   KO | 
|  | MSR   KO | 
|  | IRQ   KO | 
|  | MMU   KO | 
|  | EXCP  KO | 
|  |  | 
|  | *** | 
|  | PowerPC e500: (not implemented) | 
|  | INSN  KO | 
|  | SPR   KO | 
|  | MSR   KO | 
|  | IRQ   KO | 
|  | MMU   KO | 
|  | EXCP  KO | 
|  |  | 
|  | *** | 
|  | PowerPC e600: (not implemented) | 
|  | INSN  KO | 
|  | SPR   KO | 
|  | MSR   KO | 
|  | IRQ   KO | 
|  | MMU   KO | 
|  | EXCP  KO | 
|  |  | 
|  | *** | 
|  | 32 bits PowerPC | 
|  | PowerPC 601: (601 601v2) | 
|  | INSN  OK | 
|  | SPR   OK is HID15 only on 601v2 ? | 
|  | MSR   OK | 
|  | IRQ   KO not implemented | 
|  | MMU   ? | 
|  | EXCP  ? | 
|  | Remarks: some instructions should have a specific behavior (not implemented) | 
|  |  | 
|  | PowerPC 602: 602 | 
|  | INSN  OK | 
|  | SPR   OK | 
|  | MSR   OK | 
|  | IRQ   OK | 
|  | MMU   ? | 
|  | EXCP  ? at least timer and external interrupt are OK | 
|  | Remarks: Linux 2.4 crashes when entering user-mode. | 
|  | Linux 2.6.22 boots on this CPU but does not recognize it. | 
|  |  | 
|  | PowerPC 603: (603) | 
|  | INSN  OK | 
|  | SPR   OK | 
|  | MSR   OK | 
|  | IRQ   OK | 
|  | MMU   OK | 
|  | EXCP  OK | 
|  | Remarks: Linux 2.4 boots and properly recognizes the CPU | 
|  | Linux 2.6.22 idem. | 
|  |  | 
|  | PowerPC 603e: (603e11) | 
|  | INSN  OK | 
|  | SPR   OK | 
|  | MSR   OK | 
|  | IRQ   OK | 
|  | MMU   OK | 
|  | EXCP  OK | 
|  | Remarks: Linux 2.4 boots and properly recognizes the CPU | 
|  | Linux 2.6.22 idem. | 
|  |  | 
|  | PowerPC G2: | 
|  | INSN  OK | 
|  | SPR   OK | 
|  | MSR   OK | 
|  | IRQ   OK | 
|  | MMU   OK | 
|  | EXCP  OK | 
|  | Remarks: Linux 2.4 boots, recognizes the CPU as a 82xx. | 
|  | Linux 2.6.22 idem. | 
|  |  | 
|  | PowerPC G2le: | 
|  | INSN  OK | 
|  | SPR   OK | 
|  | MSR   OK | 
|  | IRQ   OK | 
|  | MMU   OK | 
|  | EXCP  OK | 
|  | Remarks: Linux 2.4 does not boots. Same symptoms as 602. | 
|  | Linux 2.6.22 boots and properly recognizes the CPU. | 
|  |  | 
|  | PowerPC 604: | 
|  | INSN  OK | 
|  | SPR   OK | 
|  | MSR   OK | 
|  | IRQ   OK | 
|  | MMU   OK | 
|  | EXCP  OK | 
|  | Remarks: Linux 2.4 boots and properly recognizes the CPU. | 
|  | Linux 2.6.22 idem. | 
|  |  | 
|  | PowerPC 7x0: | 
|  | INSN  OK | 
|  | SPR   OK | 
|  | MSR   OK | 
|  | IRQ   OK | 
|  | MMU   OK | 
|  | EXCP  OK | 
|  | Remarks: Linux 2.4 boots and properly recognizes the CPU. | 
|  | Linux 2.6.22 idem. | 
|  |  | 
|  | PowerPC 750fx: | 
|  | INSN  OK | 
|  | SPR   OK | 
|  | MSR   OK | 
|  | IRQ   OK | 
|  | MMU   OK | 
|  | EXCP  OK | 
|  | Remarks: Linux 2.4 boots but does not properly recognizes the CPU. | 
|  | Linux 2.6.22 boots and properly recognizes the CPU. | 
|  |  | 
|  | PowerPC 7x5: | 
|  | INSN  ? | 
|  | SPR   ? | 
|  | MSR   ? | 
|  | IRQ   OK | 
|  | MMU   ? | 
|  | EXCP  OK | 
|  | Remarks: Linux 2.4 does not boot. | 
|  | Linux 2.6.22 idem. | 
|  |  | 
|  | PowerPC 7400: | 
|  | INSN  KO Altivec missing | 
|  | SPR   OK | 
|  | MSR   OK | 
|  | IRQ   OK | 
|  | MMU   OK | 
|  | EXCP  ?  Altivec, ... | 
|  | Remarks: Linux 2.4 boots and properly recognize the CPU. | 
|  | Linux 2.6.22 idem. | 
|  |  | 
|  | PowerPC 7410: | 
|  | INSN  KO Altivec missing | 
|  | SPR   OK | 
|  | MSR   OK | 
|  | IRQ   OK | 
|  | MMU   OK | 
|  | EXCP  ?  Altivec, ... | 
|  | Remarks: Linux 2.4 boots and properly recognize the CPU. | 
|  | Linux 2.6.22 idem. | 
|  | Note that UM says tlbld & tlbli are implemented but this may be a mistake | 
|  | as TLB loads are managed by the hardware and the CPU does not implement the | 
|  | needed registers. | 
|  |  | 
|  | PowerPC 7441: | 
|  | INSN  KO Altivec missing | 
|  | SPR   OK | 
|  | MSR   OK | 
|  | IRQ   OK | 
|  | MMU   OK | 
|  | EXCP  ?  Altivec, ... | 
|  | Remarks: Linux does not have the code to handle TLB miss on this CPU | 
|  | Linux 2.6.22 idem. | 
|  |  | 
|  | PowerPC 7450/7451: | 
|  | INSN  KO Altivec missing | 
|  | SPR   OK | 
|  | MSR   OK | 
|  | IRQ   OK | 
|  | MMU   OK | 
|  | EXCP  ?  Altivec, ... | 
|  | Remarks: Linux does not have the code to handle TLB miss on this CPU | 
|  | Linux 2.6.22 idem. | 
|  |  | 
|  | PowerPC 7445/7447: | 
|  | INSN  KO Altivec missing | 
|  | SPR   OK | 
|  | MSR   OK | 
|  | IRQ   OK | 
|  | MMU   OK | 
|  | EXCP  ?  Altivec, ... | 
|  | Remarks: Linux does not have the code to handle TLB miss on this CPU | 
|  | Linux 2.6.22 idem. | 
|  |  | 
|  | PowerPC 7455/7457: | 
|  | INSN  KO Altivec missing | 
|  | SPR   OK | 
|  | MSR   OK | 
|  | IRQ   OK | 
|  | MMU   OK | 
|  | EXCP  ?  Altivec, ... | 
|  | Remarks: Linux does not have the code to handle TLB miss on this CPU | 
|  | Linux 2.6.22 idem. | 
|  |  | 
|  | 64 bits PowerPC | 
|  | PowerPC 620: (disabled) | 
|  | INSN  KO | 
|  | SPR   KO | 
|  | MSR   ? | 
|  | IRQ   KO | 
|  | MMU   KO | 
|  | EXCP  KO | 
|  | Remarks: not much documentation for this implementation... | 
|  |  | 
|  | PowerPC 970: | 
|  | INSN  KO Altivec missing and more | 
|  | SPR   KO | 
|  | MSR   ? | 
|  | IRQ   OK | 
|  | MMU   OK | 
|  | EXCP  KO partially implemented | 
|  | Remarks: Should be able to boot but there is no hw platform currently emulated. | 
|  |  | 
|  | PowerPC 970FX: | 
|  | INSN  KO Altivec missing and more | 
|  | SPR   KO | 
|  | MSR   ? | 
|  | IRQ   OK | 
|  | MMU   OK | 
|  | EXCP  KO partially implemented | 
|  | Remarks: Should be able to boot but there is no hw platform currently emulated. | 
|  |  | 
|  | PowerPC Cell: | 
|  | INSN  KO Altivec missing and more | 
|  | SPR   KO | 
|  | MSR   ? | 
|  | IRQ   ? | 
|  | MMU   ? | 
|  | EXCP  ? partially implemented | 
|  | Remarks: As the core is mostly a 970, should be able to boot. | 
|  | SPE are not implemented. | 
|  |  | 
|  | PowerPC 630: (disabled: lack of detailed specifications) | 
|  | INSN  KO | 
|  | SPR   KO | 
|  | MSR   KO | 
|  | IRQ   KO | 
|  | MMU   KO | 
|  | EXCP  KO | 
|  |  | 
|  | PowerPC 631: (disabled: lack of detailed specifications) | 
|  | INSN  KO | 
|  | SPR   KO | 
|  | MSR   KO | 
|  | IRQ   KO | 
|  | MMU   KO | 
|  | EXCP  KO | 
|  |  | 
|  | POWER4: (disabled: lack of detailed specifications) | 
|  | INSN  KO | 
|  | SPR   KO | 
|  | MSR   KO | 
|  | IRQ   KO | 
|  | MMU   KO | 
|  | EXCP  KO | 
|  |  | 
|  | POWER4+: (disabled: lack of detailed specifications) | 
|  | INSN  KO | 
|  | SPR   KO | 
|  | MSR   KO | 
|  | IRQ   KO | 
|  | MMU   KO | 
|  | EXCP  KO | 
|  |  | 
|  | POWER5: (disabled: lack of detailed specifications) | 
|  | INSN  KO | 
|  | SPR   KO | 
|  | MSR   KO | 
|  | IRQ   KO | 
|  | MMU   KO | 
|  | EXCP  KO | 
|  |  | 
|  | POWER5+: (disabled: lack of detailed specifications) | 
|  | INSN  KO | 
|  | SPR   KO | 
|  | MSR   KO | 
|  | IRQ   KO | 
|  | MMU   KO | 
|  | EXCP  KO | 
|  |  | 
|  | POWER6: (disabled: lack of detailed specifications) | 
|  | INSN  KO | 
|  | SPR   KO | 
|  | MSR   KO | 
|  | IRQ   KO | 
|  | MMU   KO | 
|  | EXCP  KO | 
|  |  | 
|  | RS64: (disabled: lack of detailed specifications) | 
|  | INSN  KO | 
|  | SPR   KO | 
|  | MSR   KO | 
|  | IRQ   KO | 
|  | MMU   KO | 
|  | EXCP  KO | 
|  |  | 
|  | RS64-II: (disabled: lack of detailed specifications) | 
|  | INSN  KO | 
|  | SPR   KO | 
|  | MSR   KO | 
|  | IRQ   KO | 
|  | MMU   KO | 
|  | EXCP  KO | 
|  |  | 
|  | RS64-III: (disabled: lack of detailed specifications) | 
|  | INSN  KO | 
|  | SPR   KO | 
|  | MSR   KO | 
|  | IRQ   KO | 
|  | MMU   KO | 
|  | EXCP  KO | 
|  |  | 
|  | RS64-IV: (disabled: lack of detailed specifications) | 
|  | INSN  KO | 
|  | SPR   KO | 
|  | MSR   KO | 
|  | IRQ   KO | 
|  | MMU   KO | 
|  | EXCP  KO | 
|  |  | 
|  | Original POWER | 
|  | POWER: (disabled: lack of detailed specifications) | 
|  | INSN  KO | 
|  | SPR   KO | 
|  | MSR   KO | 
|  | IRQ   KO | 
|  | MMU   KO | 
|  | EXCP  KO | 
|  |  | 
|  | POWER2: (disabled: lack of detailed specifications) | 
|  | INSN  KO | 
|  | SPR   KO | 
|  | MSR   KO | 
|  | IRQ   KO | 
|  | MMU   KO | 
|  | EXCP  KO | 
|  |  | 
|  | =============================================================================== | 
|  | PowerPC microcontrollers emulation status | 
|  |  | 
|  | Implemementation should be sufficient to boot Linux: | 
|  | (there seem to be problems with uboot freezing at some point) | 
|  | - PowerPC 405CR | 
|  | - PowerPC 405EP | 
|  |  | 
|  | TODO: | 
|  | - PowerPC 401 microcontrollers emulation | 
|  | - PowerPC 403 microcontrollers emulation | 
|  | - more PowerPC 405 microcontrollers emulation | 
|  | - Fixes / more features for implemented PowerPC 405 microcontrollers emulation | 
|  | - PowerPC 440 microcontrollers emulation | 
|  | - e200 microcontrollers emulation | 
|  | - e300 microcontrollers emulation | 
|  | - e500 microcontrollers emulation | 
|  | - e600 microcontrollers emulation | 
|  |  | 
|  | =============================================================================== | 
|  | PowerPC based platforms emulation status | 
|  |  | 
|  | * PREP platform (RS/6000 7043...) - TO BE CHECKED (broken) | 
|  | - Gentoo Linux live CDROM 1.4 | 
|  | - Debian Linux 3.0 | 
|  | - Mandrake Linux 9 | 
|  |  | 
|  | * heathrow PowerMac platform (beige PowerMac) - TO BE CHECKED (broken) | 
|  | - Gentoo Linux live CDROM 1.4 | 
|  | - Debian Linux 3.0 | 
|  | - Mandrake Linux 9 | 
|  |  | 
|  | * mac99 platform (white and blue PowerMac, ...) | 
|  | - Gentoo Linux live CDROM 1.4 - boots, compiles linux kernel | 
|  | - Debian Linux woody - boots from CDROM and HDD | 
|  | - Mandrake Linux 9 - boots from CDROM, freezes during install | 
|  | - Knoppix 2003-07-13_4 boots from CDROM, pb with X configuration | 
|  | distribution bug: X runs with a properly hand-coded configuration. | 
|  | - rock Linux 2.0 runs from CDROM | 
|  |  | 
|  | * Linux 2.6 support seems deadly broken (used to boot...). | 
|  |  | 
|  | * PowerPC 405EP reference boards: | 
|  | - can boot Linux 2.4 & 2.6. | 
|  | Need to provide a flash image ready to boot for reproductible tests. | 
|  |  | 
|  | TODO: | 
|  | - URGENT: fix PreP and heathrow platforms | 
|  | - PowerPC 64 reference platform | 
|  | - MCA based RS/6000 emulation | 
|  | - CHRP emulation (not PowerMac) | 
|  | - PPAR emulation | 
|  | - ePPAR emulation | 
|  | - misc PowerPC reference boards emulation | 
|  |  | 
|  | =============================================================================== |