[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v5 01/17] target/m68k: Raise the TRAPn exception with the correct
From: |
Richard Henderson |
Subject: |
[PATCH v5 01/17] target/m68k: Raise the TRAPn exception with the correct pc |
Date: |
Fri, 27 May 2022 09:47:51 -0700 |
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>
---
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 d1bf8548b7..56417f7401 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 8decc61240..d30f988ae0 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 4026572ed8..6d6d026e3c 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.34.1
- [PATCH v5 00/17] target/m68k: Conditional traps + trap cleanup, Richard Henderson, 2022/05/27
- [PATCH v5 01/17] target/m68k: Raise the TRAPn exception with the correct pc,
Richard Henderson <=
- [PATCH v5 03/17] target/m68k: Fix coding style in m68k_interrupt_all, Richard Henderson, 2022/05/27
- [PATCH v5 04/17] linux-user/m68k: Handle EXCP_TRAP1 through EXCP_TRAP15, Richard Henderson, 2022/05/27
- [PATCH v5 05/17] target/m68k: Remove retaddr in m68k_interrupt_all, Richard Henderson, 2022/05/27
- [PATCH v5 06/17] target/m68k: Fix address argument for EXCP_CHK, Richard Henderson, 2022/05/27
- [PATCH v5 07/17] target/m68k: Fix pc, c flag, and address argument for EXCP_DIV0, Richard Henderson, 2022/05/27
- [PATCH v5 10/17] target/m68k: Implement TRAPcc, Richard Henderson, 2022/05/27