Commit 4c3b2168 authored by Michael Ellerman's avatar Michael Ellerman

powerpc/kernel: Make syscall_exit a local label

Currently when we back trace something that is in a syscall we see
something like this:

[c000000000000000] [c000000000000000] SyS_read+0x6c/0x110
[c000000000000000] [c000000000000000] syscall_exit+0x0/0x98

Although it's entirely correct, seeing syscall_exit at the bottom can be
confusing - we were exiting from a syscall and then called SyS_read() ?

If we instead change syscall_exit to be a local label we get something
more intuitive:

[c0000001fa46fde0] [c00000000026719c] SyS_read+0x6c/0x110
[c0000001fa46fe30] [c000000000009264] system_call+0x38/0xd0

ie. we were handling a system call, and it was SyS_read().
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 6f963ec2
...@@ -178,7 +178,7 @@ system_call: /* label this so stack traces look sane */ ...@@ -178,7 +178,7 @@ system_call: /* label this so stack traces look sane */
mtctr r12 mtctr r12
bctrl /* Call handler */ bctrl /* Call handler */
syscall_exit: .Lsyscall_exit:
std r3,RESULT(r1) std r3,RESULT(r1)
#ifdef SHOW_SYSCALLS #ifdef SHOW_SYSCALLS
bl do_show_syscall_exit bl do_show_syscall_exit
...@@ -270,7 +270,7 @@ syscall_dotrace: ...@@ -270,7 +270,7 @@ syscall_dotrace:
syscall_enosys: syscall_enosys:
li r3,-ENOSYS li r3,-ENOSYS
b syscall_exit b .Lsyscall_exit
syscall_exit_work: syscall_exit_work:
#ifdef CONFIG_PPC_BOOK3S #ifdef CONFIG_PPC_BOOK3S
...@@ -347,33 +347,33 @@ _GLOBAL(save_nvgprs) ...@@ -347,33 +347,33 @@ _GLOBAL(save_nvgprs)
_GLOBAL(ppc_fork) _GLOBAL(ppc_fork)
bl save_nvgprs bl save_nvgprs
bl sys_fork bl sys_fork
b syscall_exit b .Lsyscall_exit
_GLOBAL(ppc_vfork) _GLOBAL(ppc_vfork)
bl save_nvgprs bl save_nvgprs
bl sys_vfork bl sys_vfork
b syscall_exit b .Lsyscall_exit
_GLOBAL(ppc_clone) _GLOBAL(ppc_clone)
bl save_nvgprs bl save_nvgprs
bl sys_clone bl sys_clone
b syscall_exit b .Lsyscall_exit
_GLOBAL(ppc32_swapcontext) _GLOBAL(ppc32_swapcontext)
bl save_nvgprs bl save_nvgprs
bl compat_sys_swapcontext bl compat_sys_swapcontext
b syscall_exit b .Lsyscall_exit
_GLOBAL(ppc64_swapcontext) _GLOBAL(ppc64_swapcontext)
bl save_nvgprs bl save_nvgprs
bl sys_swapcontext bl sys_swapcontext
b syscall_exit b .Lsyscall_exit
_GLOBAL(ret_from_fork) _GLOBAL(ret_from_fork)
bl schedule_tail bl schedule_tail
REST_NVGPRS(r1) REST_NVGPRS(r1)
li r3,0 li r3,0
b syscall_exit b .Lsyscall_exit
_GLOBAL(ret_from_kernel_thread) _GLOBAL(ret_from_kernel_thread)
bl schedule_tail bl schedule_tail
...@@ -385,7 +385,7 @@ _GLOBAL(ret_from_kernel_thread) ...@@ -385,7 +385,7 @@ _GLOBAL(ret_from_kernel_thread)
#endif #endif
blrl blrl
li r3,0 li r3,0
b syscall_exit b .Lsyscall_exit
/* /*
* This routine switches between two different tasks. The process * This routine switches between two different tasks. The process
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment