[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 01/15] target/m68k: Raise the TRAPn exception with the correct
From: |
Richard Henderson |
Subject: |
[PATCH v2 01/15] target/m68k: Raise the TRAPn exception with the correct pc |
Date: |
Thu, 2 Dec 2021 12:48:46 -0800 |
Rather than adjust the PC in all of the consumers, raise
the exception with the correct PC in the first place.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
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 790bd558c3..287f24cc60 100644
--- a/linux-user/m68k/cpu_loop.c
+++ b/linux-user/m68k/cpu_loop.c
@@ -70,7 +70,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 cfbc987ba6..36662de149 100644
--- a/target/m68k/op_helper.c
+++ b/target/m68k/op_helper.c
@@ -216,11 +216,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;
@@ -303,10 +298,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 af43c8eab8..af3febdd48 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.25.1
- [PATCH v2 00/15] target/m68k: Conditional traps + trap cleanup, Richard Henderson, 2021/12/02
- [PATCH v2 01/15] target/m68k: Raise the TRAPn exception with the correct pc,
Richard Henderson <=
- [PATCH v2 04/15] linux-user/m68k: Handle EXCP_TRAP1 through EXCP_TRAP15, Richard Henderson, 2021/12/02
- [PATCH v2 02/15] target/m68k: Switch over exception type in m68k_interrupt_all, Richard Henderson, 2021/12/02
- [PATCH v2 09/15] target/m68k: Implement TRAPcc, Richard Henderson, 2021/12/02
- [PATCH v2 12/15] target/m68k: Fix stack frame for EXCP_ILLEGAL, Richard Henderson, 2021/12/02
- [PATCH v2 14/15] linux-user/strace: Fix print_syscall_err, Richard Henderson, 2021/12/02
- [PATCH v2 13/15] tests/tcg/m68k: Add trap.c, Richard Henderson, 2021/12/02