qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [RFC 7/7] target-alpha: Implement CPU reset


From: Andreas Färber
Subject: [Qemu-devel] [RFC 7/7] target-alpha: Implement CPU reset
Date: Wed, 31 Oct 2012 04:04:04 +0100

The parent_reset class field was already prepared but unused so far.

No guarantees that this actually does The Right Thing, more fields
may need to be moved within CPUAlphaState or to AlphaCPU.

Signed-off-by: Andreas Färber <address@hidden>
---
 target-alpha/cpu.c |   28 ++++++++++++++++++++++++++++
 1 Datei geändert, 28 Zeilen hinzugefügt(+)

diff --git a/target-alpha/cpu.c b/target-alpha/cpu.c
index ab25c44..d798390 100644
--- a/target-alpha/cpu.c
+++ b/target-alpha/cpu.c
@@ -23,6 +23,24 @@
 #include "qemu-common.h"
 
 
+/* CPUClass::reset() */
+static void alpha_cpu_reset(CPUState *s)
+{
+    AlphaCPU *cpu = ALPHA_CPU(s);
+    AlphaCPUClass *acc = ALPHA_CPU_GET_CLASS(cpu);
+    CPUAlphaState *env = &cpu->env;
+
+    if (qemu_loglevel_mask(CPU_LOG_RESET)) {
+        qemu_log("CPU Reset (CPU %d)\n", env->cpu_index);
+        log_cpu_state(env, 0);
+    }
+
+    acc->parent_reset(s);
+
+    memset(env, 0, offsetof(CPUAlphaState, breakpoints));
+    tlb_flush(env, 1);
+}
+
 typedef struct AlphaCPUListState {
     fprintf_function cpu_fprintf;
     FILE *file;
@@ -221,6 +239,15 @@ static void alpha_cpu_initfn(Object *obj)
     env->fen = 1;
 }
 
+static void alpha_cpu_class_init(ObjectClass *oc, void *data)
+{
+    CPUClass *cc = CPU_CLASS(oc);
+    AlphaCPUClass *acc = ALPHA_CPU_CLASS(oc);
+
+    acc->parent_reset = cc->reset;
+    cc->reset = alpha_cpu_reset;
+}
+
 static void alpha_cpu_register(const AlphaCPUInfo *info)
 {
     TypeInfo type_info = {
@@ -239,6 +266,7 @@ static const TypeInfo alpha_cpu_type_info = {
     .instance_init = alpha_cpu_initfn,
     .abstract = true,
     .class_size = sizeof(AlphaCPUClass),
+    .class_init = alpha_cpu_class_init,
 };
 
 static void alpha_cpu_register_types(void)
-- 
1.7.10.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]