Blackfin: update ftrace for latest toolchain
[safe/jmp/linux-2.6] / arch / blackfin / kernel / ftrace-entry.S
index 6980b7a..76dd4fb 100644 (file)
@@ -17,8 +17,8 @@
  * only one we can blow away.  With pointer registers, we have P0-P2.
  *
  * Upon entry, the RETS will point to the top of the current profiled
- * function.  And since GCC setup the frame for us, the previous function
- * will be waiting there.  mmmm pie.
+ * function.  And since GCC pushed the previous RETS for us, the previous
+ * function will be waiting there.  mmmm pie.
  */
 ENTRY(__mcount)
        /* save third function arg early so we can do testing below */
@@ -70,14 +70,14 @@ ENTRY(__mcount)
        /* setup the tracer function */
        p0 = r3;
 
-       /* tracer(ulong frompc, ulong selfpc):
-        *  frompc: the pc that did the call to ...
-        *  selfpc: ... this location
-        * the selfpc itself will need adjusting for the mcount call
+       /* function_trace_call(unsigned long ip, unsigned long parent_ip):
+        *  ip: this point was called by ...
+        *  parent_ip: ... this function
+        * the ip itself will need adjusting for the mcount call
         */
-       r1 = rets;
-       r0 = [fp + 4];
-       r1 += -MCOUNT_INSN_SIZE;
+       r0 = rets;
+       r1 = [sp + 16]; /* skip the 4 local regs on stack */
+       r0 += -MCOUNT_INSN_SIZE;
 
        /* call the tracer */
        call (p0);
@@ -106,9 +106,10 @@ ENTRY(_ftrace_graph_caller)
        [--sp] = r1;
        [--sp] = rets;
 
-       r0 = fp;
+       /* prepare_ftrace_return(unsigned long *parent, unsigned long self_addr) */
+       r0 = sp;
        r1 = rets;
-       r0 += 4;
+       r0 += 16;       /* skip the 4 local regs on stack */
        r1 += -MCOUNT_INSN_SIZE;
        call _prepare_ftrace_return;