openrisc: Add syscall details to emergency syscall debugging
authorStafford Horne <shorne@gmail.com>
Sun, 30 Jan 2022 08:38:51 +0000 (17:38 +0900)
committerStafford Horne <shorne@gmail.com>
Mon, 23 May 2022 08:15:49 +0000 (17:15 +0900)
When bringing linux on the or1k Marocchino we ran into issues starting
init.  This patch adds the syscall number and return address to
assist tracing syscalls even before strace is able to be used.

By default this is all disabled but a developer could adjust the ifdef
to enable debugging.

Cc: Andrey Bacherov <bandvig@mail.ru>
Signed-off-by: Stafford Horne <shorne@gmail.com>
arch/openrisc/kernel/entry.S

index 3ca1b1f..54a87bb 100644 (file)
@@ -601,7 +601,7 @@ UNHANDLED_EXCEPTION(_vector_0xb00,0xb00)
  */
 
 _string_syscall_return:
-       .string "syscall return %ld \n\r\0"
+       .string "syscall r9:0x%08x -> syscall(%ld) return %ld\0"
        .align 4
 
 ENTRY(_sys_call_handler)
@@ -679,15 +679,25 @@ _syscall_return:
 _syscall_debug:
        l.movhi r3,hi(_string_syscall_return)
        l.ori   r3,r3,lo(_string_syscall_return)
-       l.ori   r27,r0,1
+       l.ori   r27,r0,2
        l.sw    -4(r1),r27
        l.sw    -8(r1),r11
-       l.addi  r1,r1,-8
+       l.lwz   r29,PT_ORIG_GPR11(r1)
+       l.sw    -12(r1),r29
+       l.lwz   r29,PT_GPR9(r1)
+       l.sw    -16(r1),r29
        l.movhi r27,hi(_printk)
        l.ori   r27,r27,lo(_printk)
        l.jalr  r27
-        l.nop
-       l.addi  r1,r1,8
+        l.addi  r1,r1,-16
+       l.addi  r1,r1,16
+#endif
+#if 0
+_syscall_show_regs:
+       l.movhi r27,hi(show_registers)
+       l.ori   r27,r27,lo(show_registers)
+       l.jalr  r27
+        l.or   r3,r1,r1
 #endif
 
 _syscall_check_trace_leave: