a750fc0b91
* cleanup cpu.h, removing definitions used only in translate.c/translate_init.c * add new flags to define instructions sets more precisely * various changes in MMU models definitions * add definitions for PowerPC 440/460 support (insns and SPRs). * add definitions for PowerPC 401/403 and 620 input pins model * Fix definitions for most PowerPC 401, 403, 405, 440, 601, 602, 603 and 7x0 * Preliminary support for PowerPC 74xx (aka G4) without altivec. * Code provision for other PowerPC support (7x5, 970, ...). * New SPR and PVR defined, from PowerPC 2.04 specification and other sources * Misc code bugs, error messages and styles fixes. * Update status files for PowerPC cores support. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3244 c046a42c-6fe2-441c-8c8c-71466251a162
511 lines
9.0 KiB
Plaintext
511 lines
9.0 KiB
Plaintext
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
|
|
? => uncheked
|
|
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
|
|
=> Linux 2.4 boots (at least 1 proprietary firmware).
|
|
|
|
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 crashes when entering user-mode. But it seems it does not
|
|
know about this CPU. As this CPU is close to 603e, it should be OK.
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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.
|
|
|
|
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.
|
|
|
|
PowerPC 604:
|
|
INSN OK
|
|
SPR OK
|
|
MSR OK
|
|
IRQ OK
|
|
MMU OK
|
|
EXCP OK
|
|
Remarks: Linux 2.4 boots and properly recognizes the CPU.
|
|
|
|
PowerPC 7x0:
|
|
INSN OK
|
|
SPR OK
|
|
MSR OK
|
|
IRQ OK
|
|
MMU OK
|
|
EXCP OK
|
|
Remarks: Linux 2.4 boots and properly recognizes the CPU.
|
|
|
|
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.
|
|
|
|
PowerPC 7x5:
|
|
INSN ?
|
|
SPR ?
|
|
MSR ?
|
|
IRQ OK
|
|
MMU ?
|
|
EXCP OK
|
|
=> Linux 2.4 does not boot.
|
|
|
|
PowerPC 7400:
|
|
INSN KO Altivec missing
|
|
SPR OK
|
|
MSR OK
|
|
IRQ OK
|
|
MMU OK
|
|
EXCP ? Altivec, ...
|
|
=> Linux 2.4 boots and properly recognize the CPU.
|
|
|
|
PowerPC 7410:
|
|
INSN KO Altivec missing
|
|
SPR OK
|
|
MSR OK
|
|
IRQ OK
|
|
MMU OK
|
|
EXCP ? Altivec, ...
|
|
=> Linux 2.4 boots and properly recognize the CPU.
|
|
Note that UM says tlbld & tlbli are implemented bus this may be a mistake
|
|
as TLB load are managed by the hardware and it does not implement the
|
|
needed registers.
|
|
|
|
PowerPC 7441:
|
|
INSN KO Altivec missing + TLB load insns missing
|
|
SPR OK
|
|
MSR OK
|
|
IRQ OK
|
|
MMU KO not implemented
|
|
EXCP ? Altivec, ...
|
|
|
|
PowerPC 7450/7451:
|
|
INSN KO Altivec missing + TLB load insns missing
|
|
SPR OK
|
|
MSR OK
|
|
IRQ OK
|
|
MMU KO not implemented
|
|
EXCP ? Altivec, ...
|
|
|
|
PowerPC 7445/7447:
|
|
INSN KO Altivec missing + TLB load insns missing
|
|
SPR OK
|
|
MSR OK
|
|
IRQ OK
|
|
MMU KO not implemented
|
|
EXCP ? Altivec, ...
|
|
|
|
PowerPC 7455/7457:
|
|
INSN KO Altivec missing + TLB load insns missing
|
|
SPR OK
|
|
MSR OK
|
|
IRQ OK
|
|
MMU KO not implemented
|
|
EXCP ? Altivec, ...
|
|
|
|
64 bits PowerPC
|
|
PowerPC 620: (disabled)
|
|
INSN KO
|
|
SPR KO
|
|
MSR ?
|
|
IRQ KO
|
|
MMU KO
|
|
EXCP KO
|
|
|
|
PowerPC 970: (disabled)
|
|
INSN KO Altivec missing and more
|
|
SPR KO
|
|
MSR ?
|
|
IRQ OK
|
|
MMU KO partially implemented
|
|
EXCP KO
|
|
|
|
PowerPC 970FX: (disabled)
|
|
INSN KO Altivec missing and more
|
|
SPR KO
|
|
MSR ?
|
|
IRQ OK
|
|
MMU KO partially implemented
|
|
EXCP KO
|
|
|
|
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:
|
|
- PowerPC 405CR
|
|
- PowerPC 405EP
|
|
|
|
TODO:
|
|
- More PowerPC 40x microcontrollers emulation
|
|
- PowerQUICC 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:
|
|
- MCA based RS/6000 emulation
|
|
- CHRP emulation (not PowerMac)
|
|
- PPAR emulation
|
|
- ePPAR emulation
|
|
- misc PowerPC reference boards emulation
|
|
|
|
===============================================================================
|
|
(to be completed)
|