[PATCH] arm kgdb: fix breakpoint for thumb2

Russell King (Oracle) linux at armlinux.org.uk
Mon Feb 14 02:13:43 PST 2022


On Mon, Feb 14, 2022 at 10:59:49AM +0100, Johannes Stezenbach wrote:
> Entering kdb via SysRq-G with CONFIG_THUMB2_KERNEL=y
> on Cortex-A7 in Qemu results in an Ooops, and it is
> not possible to continue because of "Catastrophic error detected".
> The root cause is using an arm breakpoint instruction in
> thumb code.

This sounds like a bug in qemu.

0xe7ffdeXX is two 16-bit instructions:

   0:   e7ff            b.n     2 <.text+0x2>
   2:   def1            udf     #241    ; 0xf1

0xe7ff is a branch to the UDF instruction.

0xdeXX is a UDF (Permanently undefined) instruction which should raise a
undefined instruction trap. As per the Arm ARM on UDF: "Permanently
Undefined generates an Undefined Instruction exception."

The encoding is also a 32-bit UDF instruction:

   0:   e7ffdef1        udf     #64993  ; 0xfde1

which is exactly why these opcodes were chosen - so we can instrument
both ARM and Thumb code without caring which it is.

Qemu needs fixing if it complains about this.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!



More information about the linux-arm-kernel mailing list