summaryrefslogtreecommitdiff
path: root/arch/powerpc
diff options
context:
space:
mode:
authorBogdan Purcareata <bogdan.purcareata@freescale.com>2015-03-18 13:59:54 (GMT)
committerHonghua Yin <Hong-Hua.Yin@freescale.com>2015-03-30 02:53:54 (GMT)
commitb62b52386eec1e9ba893e4fefe37b49a94a39845 (patch)
tree6c96123ad693980fa6d2e4912e2b68e6319f39c4 /arch/powerpc
parentdaf1c45f9e7215cc64af68f3b8eeadb2a2262031 (diff)
downloadlinux-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.S18
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: