Hello Peter, Here's the revised mini-conversion with CPUState::reset supported again.
Please apply to target-arm.next tree. Available at: https://github.com/afaerber/qemu-cpu/commits/qom-cpu-arm.v6 Regards, Andreas Cc: Anthony Liguori <anth...@codemonkey.ws> Cc: Peter Maydell <peter.mayd...@linaro.org> Cc: Paul Brook <p...@codesourcery.com> Cc: Andrzej Zaborowski <balr...@gmail.com> v5 -> v6: * By dropping some of the patches in the series, cpu_reset() would no longer reset the CPUARMState. Fix this by re-adding a reset handler and calling cpu_state_reset() for now. v4 -> v5: * Use only one non-abstract CPU type for now, leave everything else as is. * Drop cpu_arm_close() instead of converting it. * Still make available cpu-qom.h through cpu.h for convenience. v3 -> v4: * Rebased on top of type_init() v2, object_class_get_list() v2, qom-cpu v4. * Rename cpu-core.h to cpu-qom.h. While the term "ARM core" is quite common, it is less so for other architectures like s390x so use a neutral term. * Use container_of() for CPUState -> CPU macros (suggested by Anthony). * Rework arm_env_get_object() -> arm_env_get_cpu(), avoids some casts (suggested by Anthony). Also rename ENV_GET_OBJECT() -> ENV_GET_CPU(). * Sort -cpu ? list. * Use object_class_get_list() and sort ourselves rather than using object_class_foreach_ordered() with callbacks (suggested by Anthony). * Drop ARMCPUClass jtag_id since it turned out unneeded in QEMU (Peter+Andrzej). * Drop experimental "halted" property since that should be in common code. * Introduce "cpuid-variant" and "cpuid-revision" properties. * Use CPU properties to drop unneeded pxa270-* classes. * Move "/cpu" child property to integratorcp machine. v2 -> v3: * Rebased against qom-upstream.14 branch (and that against master). * Rename target-arm/cpu-core.c to cpu.c now that we no longer need VPATH. * Leave cpu-core.h as is to separate from legacy cpu.h. * Fix -cpu alias "pxa270": handled in cpu_arm_init(). * Use proper GPL headers. * Start removing CPUID uses in cpu_reset_model_id() and cpu.h. * Fully convert cpu_reset_model_id() to ARMCPUInfo or per-model code. * Experiment with adding properties ("halted"). * For testing, add a "/cpu" child property (HACK). v1 -> v2: * Cherry-pick Anthony's object_class_foreach() patch. * Fix ARMCPUClass type name (arm-cpu-core -> arm-cpu). * Add documentation. * Rename ARMCPUDef to ARMCPUInfo. * Use a C99-style table for initializing the classes through class_data instead of individual class_init functions (suggested by Anthony). * Prepare reset callback. * Make ENV_GET_OBJECT() use an inline function for readability. * Invoke the CPU's reset method from cpu_reset(). * Do feature initialization via table where sensible. * Add feature flags to ARMCPU as well (suggested by PMM for future tweaking, also simplifies load/save a bit) and initialize them from ARMCPUClass. * Make feature inference work for ARMCPU as well by not passing the ARMCPUClass. Use function-local macros to avoid the ugliness of deferencing the features pointer. Andreas Färber (2): target-arm: Drop cpu_arm_close() target-arm: Minimalistic CPU QOM'ification Makefile.target | 1 + target-arm/cpu-qom.h | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++ target-arm/cpu.c | 59 ++++++++++++++++++++++++++++++++++++++++++ target-arm/cpu.h | 2 +- target-arm/helper.c | 9 ++---- 5 files changed, 134 insertions(+), 7 deletions(-) create mode 100644 target-arm/cpu-qom.h create mode 100644 target-arm/cpu.c -- 1.7.7