Skip to content

Commit

Permalink
target/m68k: Remove retaddr in m68k_interrupt_all
Browse files Browse the repository at this point in the history
The only value this variable holds is now env->pc.

Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20220602013401.303699-6-richard.henderson@linaro.org>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
  • Loading branch information
rth7680 authored and vivier committed Jun 2, 2022
1 parent cf213da commit 035c6e7
Showing 1 changed file with 6 additions and 9 deletions.
15 changes: 6 additions & 9 deletions target/m68k/op_helper.c
Original file line number Diff line number Diff line change
Expand Up @@ -287,12 +287,9 @@ static void m68k_interrupt_all(CPUM68KState *env, int is_hw)
{
CPUState *cs = env_cpu(env);
uint32_t sp;
uint32_t retaddr;
uint32_t vector;
uint16_t sr, oldsr;

retaddr = env->pc;

if (!is_hw) {
switch (cs->exception_index) {
case EXCP_RTE:
Expand Down Expand Up @@ -385,7 +382,7 @@ static void m68k_interrupt_all(CPUM68KState *env, int is_hw)
sp -= 4;
cpu_stl_mmuidx_ra(env, sp, env->mmu.ar, MMU_KERNEL_IDX, 0);

do_stack_frame(env, &sp, 7, oldsr, 0, retaddr);
do_stack_frame(env, &sp, 7, oldsr, 0, env->pc);
env->mmu.fault = false;
if (qemu_loglevel_mask(CPU_LOG_INT)) {
qemu_log(" "
Expand All @@ -395,7 +392,7 @@ static void m68k_interrupt_all(CPUM68KState *env, int is_hw)
break;

case EXCP_ADDRESS:
do_stack_frame(env, &sp, 2, oldsr, 0, retaddr);
do_stack_frame(env, &sp, 2, oldsr, 0, env->pc);
break;

case EXCP_ILLEGAL:
Expand All @@ -404,26 +401,26 @@ static void m68k_interrupt_all(CPUM68KState *env, int is_hw)
case EXCP_TRAPCC:
case EXCP_TRACE:
/* FIXME: addr is not only env->pc */
do_stack_frame(env, &sp, 2, oldsr, env->pc, retaddr);
do_stack_frame(env, &sp, 2, oldsr, env->pc, env->pc);
break;

case EXCP_SPURIOUS ... EXCP_INT_LEVEL_7:
if (is_hw && (oldsr & SR_M)) {
do_stack_frame(env, &sp, 0, oldsr, 0, retaddr);
do_stack_frame(env, &sp, 0, oldsr, 0, env->pc);
oldsr = sr;
env->aregs[7] = sp;
cpu_m68k_set_sr(env, sr & ~SR_M);
sp = env->aregs[7];
if (!m68k_feature(env, M68K_FEATURE_UNALIGNED_DATA)) {
sp &= ~1;
}
do_stack_frame(env, &sp, 1, oldsr, 0, retaddr);
do_stack_frame(env, &sp, 1, oldsr, 0, env->pc);
break;
}
/* fall through */

default:
do_stack_frame(env, &sp, 0, oldsr, 0, retaddr);
do_stack_frame(env, &sp, 0, oldsr, 0, env->pc);
break;
}

Expand Down

0 comments on commit 035c6e7

Please sign in to comment.