diff --git a/linux-user/e2k/cpu_loop.c b/linux-user/e2k/cpu_loop.c index a8863d27a0..5af0f9bf3f 100644 --- a/linux-user/e2k/cpu_loop.c +++ b/linux-user/e2k/cpu_loop.c @@ -122,4 +122,6 @@ void target_cpu_copy_regs(CPUE2KState *env, struct target_pt_regs *regs) env->psp = regs->psp; env->usd_lo = regs->usd_lo; env->usd_hi = regs->usd_hi; + + e2k_break_save_state(env); } diff --git a/target/e2k/cpu.h b/target/e2k/cpu.h index 8278b1995e..a1355ecf4a 100644 --- a/target/e2k/cpu.h +++ b/target/e2k/cpu.h @@ -362,6 +362,7 @@ void e2k_cpu_do_interrupt(CPUState *cs); int e2k_cpu_signal_handler(int host_signum, void *pinfo, void *puc); int e2k_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n); int e2k_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n); +void e2k_break_save_state(CPUE2KState *env); #define cpu_signal_handler e2k_cpu_signal_handler diff --git a/target/e2k/helper.c b/target/e2k/helper.c index e1eaa92a79..c6006eb9c5 100644 --- a/target/e2k/helper.c +++ b/target/e2k/helper.c @@ -246,7 +246,7 @@ void helper_raise_exception(CPUE2KState *env, int tt) cpu_loop_exit(cs); } -static void break_save_state(CPUE2KState *env) +void e2k_break_save_state(CPUE2KState *env) { int wbs; @@ -276,7 +276,7 @@ void helper_break_restore_state(CPUE2KState *env) void helper_debug(CPUE2KState *env) { CPUState *cs = env_cpu(env); - break_save_state(env); + e2k_break_save_state(env); cs->exception_index = EXCP_DEBUG; cpu_loop_exit(cs); }