Move the icount system-emulation reset code out of
cpu_common_reset_hold(). Add stub for user emulation.

Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
---
 include/exec/icount.h     | 2 ++
 accel/tcg/icount-common.c | 6 ++++++
 hw/core/cpu-common.c      | 4 ++--
 stubs/icount.c            | 3 +++
 4 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/include/exec/icount.h b/include/exec/icount.h
index 7a26b40084db..e97cc4e7a426 100644
--- a/include/exec/icount.h
+++ b/include/exec/icount.h
@@ -43,6 +43,8 @@ extern ICountMode use_icount;
  */
 void icount_update(CPUState *cpu);
 
+void icount_cpu_reset(CPUState *cpu);
+
 /* get raw icount value */
 int64_t icount_get_raw(void);
 
diff --git a/accel/tcg/icount-common.c b/accel/tcg/icount-common.c
index b1b6c005fe71..4c8ceafc112b 100644
--- a/accel/tcg/icount-common.c
+++ b/accel/tcg/icount-common.c
@@ -104,6 +104,12 @@ void icount_update(CPUState *cpu)
                          &timers_state.vm_clock_lock);
 }
 
+void icount_cpu_reset(CPUState *cpu)
+{
+    cpu->icount_extra = 0;
+    qatomic_set(&cpu->neg.icount_decr.u32, 0);
+}
+
 static int64_t icount_get_raw_locked(void)
 {
     CPUState *cpu = current_cpu;
diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c
index 4f4c87f33a09..a18f05d26bda 100644
--- a/hw/core/cpu-common.c
+++ b/hw/core/cpu-common.c
@@ -19,6 +19,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "exec/icount.h"
 #include "exec/cpu-common.h"
 #include "qapi/error.h"
 #include "hw/core/cpu.h"
@@ -110,11 +111,10 @@ static void cpu_common_reset_hold(Object *obj, ResetType 
type)
 {
     CPUState *cpu = CPU(obj);
 
+    icount_cpu_reset(cpu);
     cpu->interrupt_request = 0;
     cpu->halted = cpu->start_powered_off;
     cpu->mem_io_pc = 0;
-    cpu->icount_extra = 0;
-    qatomic_set(&cpu->neg.icount_decr.u32, 0);
     cpu->neg.can_do_io = true;
     cpu->exception_index = -1;
     cpu->crash_occurred = false;
diff --git a/stubs/icount.c b/stubs/icount.c
index ceb73b4fc2ce..1d28bcf7e2bb 100644
--- a/stubs/icount.c
+++ b/stubs/icount.c
@@ -30,3 +30,6 @@ void icount_notify_exit(void)
 {
     abort();
 }
+void icount_cpu_reset(CPUState *cpu)
+{
+}
-- 
2.55.0


Reply via email to