diff options
Diffstat (limited to 'target/alpha')
-rw-r--r-- | target/alpha/helper.c | 2 | ||||
-rw-r--r-- | target/alpha/mem_helper.c | 6 |
2 files changed, 3 insertions, 5 deletions
diff --git a/target/alpha/helper.c b/target/alpha/helper.c index bbf72cadfb..8a6a948572 100644 --- a/target/alpha/helper.c +++ b/target/alpha/helper.c @@ -482,7 +482,7 @@ void QEMU_NORETURN dynamic_excp(CPUAlphaState *env, uintptr_t retaddr, cs->exception_index = excp; env->error_code = error; if (retaddr) { - cpu_restore_state(cs, retaddr); + cpu_restore_state(cs, retaddr, true); /* Floating-point exceptions (our only users) point to the next PC. */ env->pc += 4; } diff --git a/target/alpha/mem_helper.c b/target/alpha/mem_helper.c index e19ab91ec9..011bc73dca 100644 --- a/target/alpha/mem_helper.c +++ b/target/alpha/mem_helper.c @@ -34,7 +34,7 @@ void alpha_cpu_do_unaligned_access(CPUState *cs, vaddr addr, uint64_t pc; uint32_t insn; - cpu_restore_state(cs, retaddr); + cpu_restore_state(cs, retaddr, true); pc = env->pc; insn = cpu_ldl_code(env, pc); @@ -56,13 +56,11 @@ void alpha_cpu_do_transaction_failed(CPUState *cs, hwaddr physaddr, AlphaCPU *cpu = ALPHA_CPU(cs); CPUAlphaState *env = &cpu->env; - cpu_restore_state(cs, retaddr); - env->trap_arg0 = addr; env->trap_arg1 = access_type == MMU_DATA_STORE ? 1 : 0; cs->exception_index = EXCP_MCHK; env->error_code = 0; - cpu_loop_exit(cs); + cpu_loop_exit_restore(cs, retaddr); } /* try to fill the TLB and return an exception if error. If retaddr is |