Hi Alex, Here's a fixed and extended version, rebased onto ppc-next rebased onto master. Since my G2leGP3 fix is still missing from ppc-next despite supposedly applied, it is resent here as prerequisite. Series build-tested on PowerKVM now.
v1 had shown a refactoring of CPU model definitions so that a class_init could be generated from POWERPC_DEF_SVR() macro. v2 builds on this and finishes refactoring CPU families into QOM subclasses, using a POWERPC_FAMILY() macro inspired by Alex to hide type registration. Follow-up ideas: * Can init_proc callbacks be turned into realize functions? (classes needed) * Introduce super-families? (BookE for TARGET_PPCEMB? MMU/Excp/Bus?) * Derive host CPU from model instead of copying? (to inherit instance_init) Available from: git://github.com/afaerber/qemu-cpu.git qom-cpu-ppc-types.v2 https://github.com/afaerber/qemu-cpu/commits/qom-cpu-ppc-types.v2 Thanks, Andreas v1 -> v2: * Added back restriction of CPU models for TARGET_PPCEMB. * Updated ppc_def_t uses in kvm.c, fixing the build (spotted by Alex). * Updated ppc_def_t uses in broken PPC_DUMP_CPU block. * Dropped superfluous comments from alias list. * Added missing space after brace for MPC8541 alias. * Dropped superfluous space breaking 405GPe -> 405CRc aliasing. * Extended series: + Dropped nested #ifdef for POWER7. + Introduced QOM CPU families. + Refactored comments into device descriptions. + Updated POWER7 to point to POWER7_v2.3 (suggested by David). + Updated a new error message to QOM realize. Cc: Alexander Graf <ag...@suse.de> Cc: qemu-...@nongnu.org Cc: David Gibson <da...@gibson.dropbear.id.au> Cc: Julio Guerra <gu...@julio.in> Andreas Färber (52): target-ppc: Fix "G2leGP3" PVR target-ppc: Update error handling in ppc_cpu_realize() target-ppc: Drop nested TARGET_PPC64 guard for POWER7 target-ppc: Inline comma into POWERPC_DEF_SVR() macro target-ppc: Extract aliases from definitions list target-ppc: Make -cpu "ppc" an alias to "ppc32" target-ppc: Extract MPC5xx aliases target-ppc: Extract MGT823/MPC8xx as aliases target-ppc: Extract 40x aliases target-ppc: Extract 440 aliases target-ppc: Turn "ppc32" and "ppc64" CPUs into aliases target-ppc: Extract 74x7[A] aliases target-ppc: Extract 74x5 as aliases target-ppc: Extract 74x1 aliases target-ppc: Extract 7450 alias target-ppc: Extract 7448 alias target-ppc: Extract 7410 alias target-ppc: Extract 7400 alias target-ppc: Extract 7x5 aliases target-ppc: Extract 750 aliases target-ppc: Extract 740/750 aliases target-ppc: Extract 604e alias target-ppc: Extract 603e alias target-ppc: Extract 603r alias target-ppc: Extract 601/601v aliases target-ppc: Extract MPC85xx aliases target-ppc: Extract e500v1/e500v2 aliases target-ppc: Extract MPC83xx aliases target-ppc: Extract e300 alias target-ppc: Extract e200 alias target-ppc: Extract MPC82xx alias target-ppc: Extract MPC8247/MPC8248/MPC8270-80 aliases target-ppc: Extract MPC82xx aliases to *_HiP4 target-ppc: Extract MPC82xx_HiP{3,4} aliases target-ppc: Extract MPC52xx alias target-ppc: Extract MPC5200/MPC5200B aliases target-ppc: Extract MPC8240 alias target-ppc: Extract 405GPe alias target-ppc: Extract 970 aliases target-ppc: Extract POWER7 alias target-ppc: Get model name from type name target-ppc: Convert CPU definitions target-ppc: Introduce abstract CPU family types target-ppc: Set instruction flags on CPU family classes target-ppc: Register all types for TARGET_PPCEMB target-ppc: Set remaining fields on CPU family classes target-ppc: Turn descriptive CPU family comments into device descriptions target-ppc: Turn descriptive CPU model comments into device descriptions target-ppc: Update Coding Style for CPU models target-ppc: Split model definitions out of translate_init.c target-ppc: Fix remaining microcontroller typos among models target-ppc: Change "POWER7" CPU alias target-ppc/Makefile.objs | 1 + target-ppc/cpu-models.c | 1225 ++++++++++ target-ppc/cpu-models.h | 727 ++++++ target-ppc/cpu-qom.h | 17 +- target-ppc/cpu.h | 20 - target-ppc/kvm.c | 32 +- target-ppc/translate_init.c | 5325 ++++++++++++++----------------------------- 7 Dateien geändert, 3643 Zeilen hinzugefügt(+), 3704 Zeilen entfernt(-) create mode 100644 target-ppc/cpu-models.c create mode 100644 target-ppc/cpu-models.h -- 1.7.10.4