[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 03/19] target/m68k: Raise the TRAPn exception with the correct pc
From: |
Laurent Vivier |
Subject: |
[PULL 03/19] target/m68k: Raise the TRAPn exception with the correct pc |
Date: |
Thu, 2 Jun 2022 13:58:21 +0200 |
From: Richard Henderson <richard.henderson@linaro.org>
Rather than adjust the PC in all of the consumers, raise
the exception with the correct PC in the first place.
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20220602013401.303699-2-richard.henderson@linaro.org>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
---
linux-user/m68k/cpu_loop.c | 1 -
target/m68k/op_helper.c | 9 ---------
target/m68k/translate.c | 2 +-
3 files changed, 1 insertion(+), 11 deletions(-)
diff --git a/linux-user/m68k/cpu_loop.c b/linux-user/m68k/cpu_loop.c
index d1bf8548b747..56417f7401dd 100644
--- a/linux-user/m68k/cpu_loop.c
+++ b/linux-user/m68k/cpu_loop.c
@@ -56,7 +56,6 @@ void cpu_loop(CPUM68KState *env)
{
abi_long ret;
n = env->dregs[0];
- env->pc += 2;
ret = do_syscall(env,
n,
env->dregs[1],
diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c
index 8decc612409c..d30f988ae089 100644
--- a/target/m68k/op_helper.c
+++ b/target/m68k/op_helper.c
@@ -217,11 +217,6 @@ static void cf_interrupt_all(CPUM68KState *env, int is_hw)
cpu_loop_exit(cs);
return;
}
- if (cs->exception_index >= EXCP_TRAP0
- && cs->exception_index <= EXCP_TRAP15) {
- /* Move the PC after the trap instruction. */
- retaddr += 2;
- }
}
vector = cs->exception_index << 2;
@@ -304,10 +299,6 @@ static void m68k_interrupt_all(CPUM68KState *env, int
is_hw)
/* Return from an exception. */
m68k_rte(env);
return;
- case EXCP_TRAP0 ... EXCP_TRAP15:
- /* Move the PC after the trap instruction. */
- retaddr += 2;
- break;
}
}
diff --git a/target/m68k/translate.c b/target/m68k/translate.c
index e4efd988d2db..22e5379d3c64 100644
--- a/target/m68k/translate.c
+++ b/target/m68k/translate.c
@@ -4860,7 +4860,7 @@ DISAS_INSN(wdebug)
DISAS_INSN(trap)
{
- gen_exception(s, s->base.pc_next, EXCP_TRAP0 + (insn & 0xf));
+ gen_exception(s, s->pc, EXCP_TRAP0 + (insn & 0xf));
}
static void gen_load_fcr(DisasContext *s, TCGv res, int reg)
--
2.36.1
- [PULL 00/19] M68k for 7.1 patches, Laurent Vivier, 2022/06/02
- [PULL 01/19] target/m68k: Clear mach in m68k_cpu_disas_set_info, Laurent Vivier, 2022/06/02
- [PULL 02/19] target/m68k: Enable halt insn for 68060, Laurent Vivier, 2022/06/02
- [PULL 06/19] linux-user/m68k: Handle EXCP_TRAP1 through EXCP_TRAP15, Laurent Vivier, 2022/06/02
- [PULL 04/19] target/m68k: Switch over exception type in m68k_interrupt_all, Laurent Vivier, 2022/06/02
- [PULL 03/19] target/m68k: Raise the TRAPn exception with the correct pc,
Laurent Vivier <=
- [PULL 07/19] target/m68k: Remove retaddr in m68k_interrupt_all, Laurent Vivier, 2022/06/02
- [PULL 08/19] target/m68k: Fix address argument for EXCP_CHK, Laurent Vivier, 2022/06/02
- [PULL 18/19] linux-user/strace: Adjust get_thread_area for m68k, Laurent Vivier, 2022/06/02
- [PULL 12/19] target/m68k: Implement TRAPcc, Laurent Vivier, 2022/06/02
- [PULL 14/19] target/m68k: Implement TRAPV, Laurent Vivier, 2022/06/02
- [PULL 15/19] target/m68k: Implement FTRAPcc, Laurent Vivier, 2022/06/02
- [PULL 16/19] tests/tcg/m68k: Add trap.c, Laurent Vivier, 2022/06/02
- [PULL 09/19] target/m68k: Fix pc, c flag, and address argument for EXCP_DIV0, Laurent Vivier, 2022/06/02
- [PULL 11/19] target/m68k: Fix stack frame for EXCP_ILLEGAL, Laurent Vivier, 2022/06/02
- [PULL 05/19] target/m68k: Fix coding style in m68k_interrupt_all, Laurent Vivier, 2022/06/02