powerpc64/ftrace: use PACA to retrieve TOC in mod_return_to_handler
authorSteven Rostedt <srostedt@redhat.com>
Tue, 15 Sep 2009 15:30:14 +0000 (08:30 -0700)
committerSteven Rostedt <rostedt@goodmis.org>
Tue, 13 Oct 2009 21:20:56 +0000 (14:20 -0700)
The mod_return_to_handler needs to switch to the kernel TOC before
jumping to a the kernel code. It currently does this by looking
at the kernel function data and retrieves the TOC that way.

Not only is this inefficient, it also breaks with a relocatable kernel.
The PACA contains the kernel TOC and we can easily retrieve it that
way.

Reported-by: Sachin Sant <sachinp@in.ibm.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
arch/powerpc/kernel/entry_64.S

index 900e0ee..f9fd54b 100644 (file)
@@ -1038,8 +1038,7 @@ _GLOBAL(mod_return_to_handler)
         * We are in a module using the module's TOC.
         * Switch to our TOC to run inside the core kernel.
         */
         * We are in a module using the module's TOC.
         * Switch to our TOC to run inside the core kernel.
         */
-       LOAD_REG_IMMEDIATE(r4,ftrace_return_to_handler)
-       ld      r2, 8(r4)
+       ld      r2, PACATOC(r13)
 
        bl      .ftrace_return_to_handler
        nop
 
        bl      .ftrace_return_to_handler
        nop