powerpc: Fix kgdb on little endian ppc64le
authorBalbir Singh <bsingharora@gmail.com>
Mon, 1 Feb 2016 06:03:25 +0000 (17:03 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 17 Feb 2016 13:03:26 +0000 (00:03 +1100)
I spent some time trying to use kgdb and debugged my inability to
resume from kgdb_handle_breakpoint(). NIP is not incremented
and that leads to a loop in the debugger.

I've tested this lightly on a virtual instance with KDB enabled.
After the patch, I am able to get the "go" command to work as
expected.

Signed-off-by: Balbir Singh <bsingharora@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/kernel/kgdb.c

index e77c3ccf8dcfe432c6f7e7b761cb64a67afa3bed..dbf098121ce638fcbb2c6c91e1426014b2b28f3d 100644 (file)
@@ -445,7 +445,11 @@ int kgdb_arch_handle_exception(int vector, int signo, int err_code,
  * Global data
  */
 struct kgdb_arch arch_kgdb_ops = {
+#ifdef __LITTLE_ENDIAN__
+       .gdb_bpt_instr = {0x08, 0x10, 0x82, 0x7d},
+#else
        .gdb_bpt_instr = {0x7d, 0x82, 0x10, 0x08},
+#endif
 };
 
 static int kgdb_not_implemented(struct pt_regs *regs)