aboutsummaryrefslogtreecommitdiff
path: root/target
diff options
context:
space:
mode:
authorLaurent Vivier <laurent@vivier.eu>2023-01-26 13:52:34 +0100
committerLaurent Vivier <laurent@vivier.eu>2023-02-01 10:18:21 +0100
commitc1fc91b82545a2b8ab73f81e5b7b6b0fec292ea1 (patch)
tree3217666f7507657ecd725437b5f1f3c6b0401bff /target
parent13356edb87506c148b163b8c7eb0695647d00c2a (diff)
m68k: fix 'bkpt' instruction in softmmu mode
In linux-user mode, 'bkpt' generates an EXP_DEBUG exception to allow QEMU gdb server to intercept and manage the operation with an external debugger. In softmmu mode, the instruction must generate an illegal instruction exception as it is on real hardware to be managed by the kernel. Buglink: https://gitlab.com/qemu-project/qemu/-/issues/1462 Signed-off-by: Laurent Vivier <laurent@vivier.eu> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20230126125234.3186042-1-laurent@vivier.eu> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Diffstat (limited to 'target')
-rw-r--r--target/m68k/translate.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/target/m68k/translate.c b/target/m68k/translate.c
index 18418312b1..31178c3b1d 100644
--- a/target/m68k/translate.c
+++ b/target/m68k/translate.c
@@ -2774,7 +2774,11 @@ DISAS_INSN(swap)
DISAS_INSN(bkpt)
{
+#if defined(CONFIG_SOFTMMU)
+ gen_exception(s, s->base.pc_next, EXCP_ILLEGAL);
+#else
gen_exception(s, s->base.pc_next, EXCP_DEBUG);
+#endif
}
DISAS_INSN(pea)