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
