From a750fc0b9184a520d00d9e949160a0c6d3232ecd Mon Sep 17 00:00:00 2001 From: j_mayer Date: Wed, 26 Sep 2007 23:54:22 +0000 Subject: Great rework and cleanups to ease PowerPC implementations definitions. * 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 --- target-ppc/STATUS | 653 +++++++++++++++++++++++++++++++++++------------------- 1 file changed, 424 insertions(+), 229 deletions(-) (limited to 'target-ppc/STATUS') diff --git a/target-ppc/STATUS b/target-ppc/STATUS index 1901865..b4daa97a 100644 --- a/target-ppc/STATUS +++ b/target-ppc/STATUS @@ -4,267 +4,462 @@ The goal of this file is to provide a reference status to avoid regressions. =============================================================================== PowerPC core emulation status -32 bits PowerPC -PowerPC 601: -INSN -SPR -MMU -EXCP - -PowerPC 602: -INSN -SPR -MMU -EXCP - -PowerPC 603: -INSN OK -SPR OK -MMU OK -EXCP OK - -PowerPC 604: -INSN OK -SPR OK -MMU OK -EXCP OK - -PowerPC 740: -INSN OK -SPR OK -MMU OK -EXCP OK - -PowerPC 745: -INSN -SPR -MMU -EXCP - -PowerPC 750: -INSN OK -SPR OK -MMU OK -EXCP OK - -PowerPC 755: -INSN -SPR -MMU -EXCP +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 -PowerPC 7400: -INSN KO -SPR KO -MMU OK -EXCP OK +Embedded PowerPC cores +*** +PowerPC 401: +INSN OK +SPR OK 401A1 +MSR OK +IRQ KO partially implemented +MMU OK +EXCP ? -PowerPC 7410: -INSN KO -SPR KO -MMU OK -EXCP OK - -PowerPC 7450: -INSN KO -SPR KO -MMU OK -EXCP OK - -PowerPC 7455: -INSN KO -SPR KO -MMU OK -EXCP OK - -PowerPC 7457: -INSN KO -SPR KO -MMU OK -EXCP OK - -PowerPC 7457A: -INSN KO -SPR KO -MMU OK -EXCP OK +PowerPC 401x2: +INSN OK +SPR OK 401B2 401C2 401D2 401E2 401F2 +MSR OK +IRQ KO partially implemented +MMU OK +EXCP ? -64 bits PowerPC -PowerPC 970: -INSN KO -SPR KO -MMU KO -EXCP KO - -PowerPC 620: (lack of precise informations) -INSN KO -SPR KO -MMU KO -EXCP KO - -PowerPC 630: (lack of precise informations) -INSN KO -SPR KO -MMU KO -EXCP KO - -PowerPC 631: (lack of precise informations) -INSN KO -SPR KO -MMU KO -EXCP KO - -POWER4: (lack of precise informations) -INSN KO -SPR KO -MMU KO -EXCP KO - -POWER4+: (lack of precise informations) -INSN KO -SPR KO -MMU KO -EXCP KO - -POWER5: (lack of precise informations) -INSN KO -SPR KO -MMU KO -EXCP KO - -POWER5+: (lack of precise informations) -INSN KO -SPR KO -MMU KO -EXCP KO - -POWER6: (lack of precise informations) -INSN KO -SPR KO -MMU KO -EXCP KO - -RS64: (lack of precise informations) -INSN KO -SPR KO -MMU KO -EXCP KO - -RS64-II: (lack of precise informations) -INSN KO -SPR KO -MMU KO -EXCP KO - -RS64-III: (lack of precise informations) -INSN KO -SPR KO -MMU KO -EXCP KO - -RS64-IV: (lack of precise informations) -INSN KO -SPR KO -MMU KO -EXCP KO +PowerPC IOP480: +INSN OK +SPR OK IOP480 +MSR OK +IRQ KO partially implemented +MMU OK +EXCP ? -Embedded PowerPC cores -PowerPC 401: -INSN OK -SPR OK -MMU OK -EXCP ? +To be checked: 401G2 401B3 Cobra +*** PowerPC 403: -INSN OK -SPR OK -MMU OK -EXCP ? +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: -INSN OK -SPR OK -MMU OK -EXCP OK +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 460: (lack of precise informations) +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 -Freescale (to be completed) ... +*** +PowerPC e200: (not implemented) +INSN KO +SPR KO +MSR KO +IRQ KO +MMU KO +EXCP KO -Original POWER -POWER: (lack of precise informations) +*** +PowerPC e300: (not implemented) INSN KO SPR KO +MSR KO +IRQ KO MMU KO EXCP KO -POWER2: (lack of precise informations) +*** +PowerPC e500: (not implemented) INSN KO SPR KO +MSR KO +IRQ KO MMU KO EXCP KO -PowerPC CPU known to work (ie booting at least Linux 2.4): -* main stream PowerPC cores -- PowerPC 603 & derivatives -- PowerPC 604 & derivatives -- PowerPC 740 & derivatives -- PowerPC 750 & derivatives -- PowerPC 405 - -PowerPC that should work but are not supported by standard Linux kernel -(then remain mostly untested) -- PowerPC 745 -- PowerPC 755 - -Work in progress: -* embedded PowerPC cores -- BookE PowerPC -- e500 core (Freescale PowerQUICC) -* main stream PowerPC cores -- PowerPC 601 -- PowerPC 602 +*** +PowerPC e600: (not implemented) +INSN KO +SPR KO +MSR KO +IRQ KO +MMU KO +EXCP KO -TODO: -* embedded PowerPC cores -- PowerPC 401 -- PowerPC 403 -- PowerPC 440 -- PowerPC 460 -* main stream PowerPC cores -- PowerPC 7400 (aka G4) -- PowerPC 7410 -- PowerPC 7450 -- PowerPC 7455 -- PowerPC 7457 -- PowerPC 7457A -* original POWER -- POWER -- POWER2 -* 64 bits PowerPC cores -- PowerPC 620 -- PowerPC 630 (aka POWER3) -- PowerPC 631 (aka POWER3+) -- POWER4 -- POWER4+ -- POWER5 -- POWER5+ -- PowerPC 970 -* RS64 series -- RS64 -- RS64-II -- RS64-III -- RS64-IV +*** +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 -- cgit v1.1