[PATCH] m68k: fix 'bkpt' instruction in softmmu mode

Laurent Vivier posted 1 patch 1 year, 3 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230126125234.3186042-1-laurent@vivier.eu
Maintainers: Laurent Vivier <laurent@vivier.eu>
target/m68k/translate.c | 4 ++++
1 file changed, 4 insertions(+)
[PATCH] m68k: fix 'bkpt' instruction in softmmu mode
Posted by Laurent Vivier 1 year, 3 months ago
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/146
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
---
 target/m68k/translate.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/target/m68k/translate.c b/target/m68k/translate.c
index 18418312b14b..31178c3b1d17 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)
-- 
2.38.1
Re: [PATCH] m68k: fix 'bkpt' instruction in softmmu mode
Posted by Mark Cave-Ayland 1 year, 3 months ago
On 26/01/2023 12:52, Laurent Vivier wrote:

> 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/146

Hi Laurent,

I think this should be https://gitlab.com/qemu-project/qemu/-/issues/1462?

> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
> ---
>   target/m68k/translate.c | 4 ++++
>   1 file changed, 4 insertions(+)
> 
> diff --git a/target/m68k/translate.c b/target/m68k/translate.c
> index 18418312b14b..31178c3b1d17 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)


ATB,

Mark.
Re: [PATCH] m68k: fix 'bkpt' instruction in softmmu mode
Posted by Laurent Vivier 1 year, 3 months ago
Le 26/01/2023 à 23:12, Mark Cave-Ayland a écrit :
> On 26/01/2023 12:52, Laurent Vivier wrote:
> 
>> 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/146
> 
> Hi Laurent,
> 
> I think this should be https://gitlab.com/qemu-project/qemu/-/issues/1462?

oh, yes, thank you

Laurent


Re: [PATCH] m68k: fix 'bkpt' instruction in softmmu mode
Posted by Richard Henderson 1 year, 3 months ago
On 1/26/23 02:52, Laurent Vivier wrote:
> 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/146
> Signed-off-by: Laurent Vivier<laurent@vivier.eu>
> ---
>   target/m68k/translate.c | 4 ++++
>   1 file changed, 4 insertions(+)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~