]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - arch/s390/kernel/mcount64.S
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / arch / s390 / kernel / mcount64.S
index c37211c6092b5a7e9dfeac083898070f884ec070..e73667286ac0fdc8957dab079111e8511498a332 100644 (file)
@@ -7,6 +7,8 @@
 
 #include <asm/asm-offsets.h>
 
+       .section .kprobes.text, "ax"
+
        .globl ftrace_stub
 ftrace_stub:
        br      %r14
@@ -16,12 +18,6 @@ _mcount:
 #ifdef CONFIG_DYNAMIC_FTRACE
        br      %r14
 
-       .data
-       .globl  ftrace_dyn_func
-ftrace_dyn_func:
-       .quad   ftrace_stub
-       .previous
-
        .globl ftrace_caller
 ftrace_caller:
 #endif
@@ -35,26 +31,19 @@ ftrace_caller:
        stg     %r1,__SF_BACKCHAIN(%r15)
        lgr     %r2,%r14
        lg      %r3,168(%r15)
-#ifdef CONFIG_DYNAMIC_FTRACE
-       larl    %r14,ftrace_dyn_func
-#else
        larl    %r14,ftrace_trace_function
-#endif
        lg      %r14,0(%r14)
        basr    %r14,%r14
 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
-#ifdef CONFIG_DYNAMIC_FTRACE
+       lg      %r2,168(%r15)
+       lg      %r3,272(%r15)
        .globl  ftrace_graph_caller
 ftrace_graph_caller:
-       # This unconditional branch gets runtime patched. Change only if
-       # you know what you are doing. See ftrace_enable_graph_caller().
-       j       0f
-#endif
-       lg      %r2,272(%r15)
-       lg      %r3,168(%r15)
-       brasl   %r14,prepare_ftrace_return
-       stg     %r2,168(%r15)
-0:
+# The bras instruction gets runtime patched to call prepare_ftrace_return.
+# See ftrace_enable_ftrace_graph_caller. The patched instruction is:
+#      bras    %r14,prepare_ftrace_return
+       bras    %r14,0f
+0:     stg     %r2,168(%r15)
 #endif
        aghi    %r15,160
        lmg     %r2,%r5,32(%r15)