]> pilppa.org Git - linux-2.6-omap-h63xx.git/commit
powerpc: ftrace, do nothing in mcount call for dyn ftrace
authorSteven Rostedt <srostedt@redhat.com>
Thu, 20 Nov 2008 21:18:55 +0000 (13:18 -0800)
committerIngo Molnar <mingo@elte.hu>
Fri, 28 Nov 2008 13:07:45 +0000 (14:07 +0100)
commitc7b0d17366d6e04a11470fc8d85f9fbac02671b9
tree1725700cb0d4e8b58aec37d64f350a093e64e3cd
parent813b8520f5c240c71df55d14095a7b171de264ce
powerpc: ftrace, do nothing in mcount call for dyn ftrace

Impact: quicken mcount calls that are not replaced by dyn ftrace

Dynamic ftrace no longer does on the fly recording of mcount locations.
The mcount locations are now found at compile time. The mcount
function no longer needs to store registers and call a stub function.
It can now just simply return.

Since there are some functions that do not get converted to a nop
(.init sections and other code that may disappear), this patch should
help speed up that code.

Also, the stub for mcount on PowerPC 32 can not be a simple branch
link register like it is on PowerPC 64. According to the ABI specification:

"The _mcount routine is required to restore the link register from
 the stack so that the profiling code can be inserted transparently,
 whether or not the profiled function saves the link register itself."

This means that we must restore the link register that was used
to make the call to mcount.  The minimal mcount function for PPC32
ends up being:

 mcount:
        mflr    r0
        mtctr   r0
        lwz     r0, 4(r1)
        mtlr    r0
        bctr

Where we move the link register used to call mcount into the
ctr register, and then restore the link register from the stack.
Then we use the ctr register to jump back to the mcount caller.
The r0 register is free for us to use.

Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/powerpc/kernel/entry_32.S
arch/powerpc/kernel/entry_64.S