From: Peter Crosthwaite <[email protected]> MicroblazeCPUClass is only needed for parent-class abstract function access. Just use parent classes for reset and realize access and remove MicroblazeCPUClass completely.
Signed-off-by: Peter Crosthwaite <[email protected]> --- target-microblaze/cpu-qom.h | 22 ++-------------------- target-microblaze/cpu.c | 14 ++++---------- 2 files changed, 6 insertions(+), 30 deletions(-) diff --git a/target-microblaze/cpu-qom.h b/target-microblaze/cpu-qom.h index ec2b989..b02f036 100644 --- a/target-microblaze/cpu-qom.h +++ b/target-microblaze/cpu-qom.h @@ -24,28 +24,10 @@ #define TYPE_MICROBLAZE_CPU "microblaze-cpu" -#define MICROBLAZE_CPU_CLASS(klass) \ - OBJECT_CLASS_CHECK(MicroBlazeCPUClass, (klass), TYPE_MICROBLAZE_CPU) #define MICROBLAZE_CPU(obj) \ OBJECT_CHECK(MicroBlazeCPU, (obj), TYPE_MICROBLAZE_CPU) -#define MICROBLAZE_CPU_GET_CLASS(obj) \ - OBJECT_GET_CLASS(MicroBlazeCPUClass, (obj), TYPE_MICROBLAZE_CPU) - -/** - * MicroBlazeCPUClass: - * @parent_realize: The parent class' realize handler. - * @parent_reset: The parent class' reset handler. - * - * A MicroBlaze CPU model. - */ -typedef struct MicroBlazeCPUClass { - /*< private >*/ - CPUClass parent_class; - /*< public >*/ - - DeviceRealize parent_realize; - void (*parent_reset)(CPUState *cpu); -} MicroBlazeCPUClass; +#define MICROBLAZE_CPU_PARENT_CLASS \ + object_class_get_parent(object_class_by_name(TYPE_MICROBLAZE_CPU)) /** * MicroBlazeCPU: diff --git a/target-microblaze/cpu.c b/target-microblaze/cpu.c index dce1c7e..a938ba8 100644 --- a/target-microblaze/cpu.c +++ b/target-microblaze/cpu.c @@ -25,15 +25,14 @@ #include "hw/qdev-properties.h" #include "migration/vmstate.h" - /* CPUClass::reset() */ static void mb_cpu_reset(CPUState *s) { MicroBlazeCPU *cpu = MICROBLAZE_CPU(s); - MicroBlazeCPUClass *mcc = MICROBLAZE_CPU_GET_CLASS(cpu); + CPUClass *cc_parent = CPU_CLASS(MICROBLAZE_CPU_PARENT_CLASS); CPUMBState *env = &cpu->env; - mcc->parent_reset(s); + cc_parent->reset(s); memset(env, 0, offsetof(CPUMBState, breakpoints)); env->res_addr = RES_ADDR_NONE; @@ -84,11 +83,10 @@ static void mb_cpu_reset(CPUState *s) static void mb_cpu_realizefn(DeviceState *dev, Error **errp) { MicroBlazeCPU *cpu = MICROBLAZE_CPU(dev); - MicroBlazeCPUClass *mcc = MICROBLAZE_CPU_GET_CLASS(dev); - + DeviceClass *dc_parent = DEVICE_CLASS(MICROBLAZE_CPU_PARENT_CLASS); cpu_reset(CPU(cpu)); - mcc->parent_realize(dev, errp); + dc_parent->realize(dev, errp); } static void mb_cpu_initfn(Object *obj) @@ -123,12 +121,9 @@ static void mb_cpu_class_init(ObjectClass *oc, void *data) { DeviceClass *dc = DEVICE_CLASS(oc); CPUClass *cc = CPU_CLASS(oc); - MicroBlazeCPUClass *mcc = MICROBLAZE_CPU_CLASS(oc); - mcc->parent_realize = dc->realize; dc->realize = mb_cpu_realizefn; - mcc->parent_reset = cc->reset; cc->reset = mb_cpu_reset; cc->do_interrupt = mb_cpu_do_interrupt; @@ -143,7 +138,6 @@ static const TypeInfo mb_cpu_type_info = { .parent = TYPE_CPU, .instance_size = sizeof(MicroBlazeCPU), .instance_init = mb_cpu_initfn, - .class_size = sizeof(MicroBlazeCPUClass), .class_init = mb_cpu_class_init, }; -- 1.8.3.rc1.44.gb387c77.dirty
