diff options
author | Bogdan Purcareata <bogdan.purcareata@freescale.com> | 2015-03-18 13:59:54 (GMT) |
---|---|---|
committer | Honghua Yin <Hong-Hua.Yin@freescale.com> | 2015-03-30 02:53:54 (GMT) |
commit | b62b52386eec1e9ba893e4fefe37b49a94a39845 (patch) | |
tree | 6c96123ad693980fa6d2e4912e2b68e6319f39c4 /arch/powerpc | |
parent | daf1c45f9e7215cc64af68f3b8eeadb2a2262031 (diff) | |
download | linux-fsl-qoriq-b62b52386eec1e9ba893e4fefe37b49a94a39845.tar.xz |
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: Michael Ellerman <mpe@ellerman.id.au>
(backported from commit 4c3b21686111e0ac6018469dacbc5549f9915cf8)
Signed-off-by: Bogdan Purcareata <bogdan.purcareata@freescale.com>
Change-Id: I2f04a5c9db260ffc36b95ce6ee48c50535053f7e
Reviewed-on: http://git.am.freescale.net:8181/33028
Reviewed-by: Scott Wood <scottwood@freescale.com>
Tested-by: Honghua Yin <Hong-Hua.Yin@freescale.com>
Reviewed-by: Honghua Yin <Hong-Hua.Yin@freescale.com>
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/kernel/entry_64.S | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index e6bfe8e..24f0cf3 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S @@ -178,7 +178,7 @@ system_call: /* label this so stack traces look sane */ mtctr r10 bctrl /* Call handler */ -syscall_exit: +.Lsyscall_exit: std r3,RESULT(r1) #ifdef SHOW_SYSCALLS bl .do_show_syscall_exit @@ -270,7 +270,7 @@ syscall_dotrace: syscall_enosys: li r3,-ENOSYS - b syscall_exit + b .Lsyscall_exit syscall_exit_work: #ifdef CONFIG_PPC_BOOK3S @@ -347,33 +347,33 @@ _GLOBAL(save_nvgprs) _GLOBAL(ppc_fork) bl .save_nvgprs bl .sys_fork - b syscall_exit + b .Lsyscall_exit _GLOBAL(ppc_vfork) bl .save_nvgprs bl .sys_vfork - b syscall_exit + b .Lsyscall_exit _GLOBAL(ppc_clone) bl .save_nvgprs bl .sys_clone - b syscall_exit + b .Lsyscall_exit _GLOBAL(ppc32_swapcontext) bl .save_nvgprs bl .compat_sys_swapcontext - b syscall_exit + b .Lsyscall_exit _GLOBAL(ppc64_swapcontext) bl .save_nvgprs bl .sys_swapcontext - b syscall_exit + b .Lsyscall_exit _GLOBAL(ret_from_fork) bl .schedule_tail REST_NVGPRS(r1) li r3,0 - b syscall_exit + b .Lsyscall_exit _GLOBAL(ret_from_kernel_thread) bl .schedule_tail @@ -383,7 +383,7 @@ _GLOBAL(ret_from_kernel_thread) mr r3,r15 blrl li r3,0 - b syscall_exit + b .Lsyscall_exit .section ".toc","aw" DSCR_DEFAULT: |