Now the alpha clipper machine will execute a proper reset we can use
the reset mechanisms to reset the CPU.

Signed-off-by: Alex Bennée <[email protected]>
---
 target/alpha/cpu.h |  2 ++
 target/alpha/cpu.c | 10 ++++++----
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/target/alpha/cpu.h b/target/alpha/cpu.h
index 45944e46b54..0da6a4a2f10 100644
--- a/target/alpha/cpu.h
+++ b/target/alpha/cpu.h
@@ -269,6 +269,7 @@ struct ArchCPU {
 /**
  * AlphaCPUClass:
  * @parent_realize: The parent class' realize handler.
+ * @parent_phases: The parent class' reset phase handlers.
  *
  * An Alpha CPU model.
  */
@@ -276,6 +277,7 @@ struct AlphaCPUClass {
     CPUClass parent_class;
 
     DeviceRealize parent_realize;
+    ResettablePhases parent_phases;
 };
 
 #ifndef CONFIG_USER_ONLY
diff --git a/target/alpha/cpu.c b/target/alpha/cpu.c
index 1780db7d1e2..e225f11ac0a 100644
--- a/target/alpha/cpu.c
+++ b/target/alpha/cpu.c
@@ -202,12 +202,10 @@ static void ev67_cpu_initfn(Object *obj)
     cpu_env(CPU(obj))->amask |= AMASK_CIX | AMASK_PREFETCH;
 }
 
-static void alpha_cpu_initfn(Object *obj)
+static void alpha_cpu_reset_exit(Object *obj, ResetType type)
 {
     CPUAlphaState *env = cpu_env(CPU(obj));
 
-    /* TODO all this should be done in reset, not init */
-
     env->lock_addr = -1;
 
     /*
@@ -277,10 +275,15 @@ static void alpha_cpu_class_init(ObjectClass *oc, const 
void *data)
     DeviceClass *dc = DEVICE_CLASS(oc);
     CPUClass *cc = CPU_CLASS(oc);
     AlphaCPUClass *acc = ALPHA_CPU_CLASS(oc);
+    ResettableClass *rc = RESETTABLE_CLASS(oc);
 
     device_class_set_parent_realize(dc, alpha_cpu_realizefn,
                                     &acc->parent_realize);
 
+    resettable_class_set_parent_phases(rc,
+                                       NULL, NULL, alpha_cpu_reset_exit,
+                                       &acc->parent_phases);
+
     cc->class_by_name = alpha_cpu_class_by_name;
     cc->dump_state = alpha_cpu_dump_state;
     cc->set_pc = alpha_cpu_set_pc;
@@ -311,7 +314,6 @@ static const TypeInfo alpha_cpu_type_infos[] = {
         .parent = TYPE_CPU,
         .instance_size = sizeof(AlphaCPU),
         .instance_align = __alignof(AlphaCPU),
-        .instance_init = alpha_cpu_initfn,
         .abstract = true,
         .class_size = sizeof(AlphaCPUClass),
         .class_init = alpha_cpu_class_init,
-- 
2.47.3


Reply via email to