MIPS: Tracing: Add dynamic function graph tracer for MIPS
[linux-2.6-block.git] / arch / mips / kernel / mcount.S
index b50e38d828c47317b60797d39b826104f0c11c0d..98d4690325066d2828019c808f16731732d6db7c 100644 (file)
@@ -77,6 +77,13 @@ ftrace_call:
        nop     /* a placeholder for the call to a real tracing function */
         move   a1, AT          /* arg2: the caller's next ip, parent */
 
+#ifdef CONFIG_FUNCTION_GRAPH_TRACER
+       .globl ftrace_graph_call
+ftrace_graph_call:
+       nop
+        nop
+#endif
+
        MCOUNT_RESTORE_REGS
        .globl ftrace_stub
 ftrace_stub:
@@ -124,10 +131,13 @@ ftrace_stub:
 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
 
 NESTED(ftrace_graph_caller, PT_SIZE, ra)
+#ifdef CONFIG_DYNAMIC_FTRACE
+       PTR_L   a1, PT_R31(sp)  /* load the original ra from the stack */
+#else
        MCOUNT_SAVE_REGS
-
-       PTR_LA  a0, PT_R1(sp)   /* arg1: &AT -> a0 */
        move    a1, ra          /* arg2: next ip, selfaddr */
+#endif
+       PTR_LA  a0, PT_R1(sp)   /* arg1: &AT -> a0 */
        jal     prepare_ftrace_return
         move   a2, fp          /* arg3: frame pointer */