Loading arch/blackfin/kernel/ftrace-entry.S +9 −3 Original line number Diff line number Diff line Loading @@ -115,9 +115,12 @@ ENTRY(_ftrace_graph_caller) [--sp] = r1; [--sp] = rets; /* prepare_ftrace_return(unsigned long *parent, unsigned long self_addr) */ r0 = sp; r1 = rets; /* prepare_ftrace_return(parent, self_addr, frame_pointer) */ r0 = sp; /* unsigned long *parent */ r1 = rets; /* unsigned long self_addr */ #ifdef CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST r2 = fp; /* unsigned long frame_pointer */ #endif r0 += 16; /* skip the 4 local regs on stack */ r1 += -MCOUNT_INSN_SIZE; call _prepare_ftrace_return; Loading @@ -136,6 +139,9 @@ ENTRY(_return_to_handler) [--sp] = r1; /* get original return address */ #ifdef CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST r0 = fp; /* Blackfin is sane, so omit this */ #endif call _ftrace_return_to_handler; rets = r0; Loading arch/blackfin/kernel/ftrace.c +4 −2 Original line number Diff line number Diff line Loading @@ -16,7 +16,8 @@ * Hook the return address and push it in the stack of return addrs * in current thread info. */ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr) void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr, unsigned long frame_pointer) { struct ftrace_graph_ent trace; unsigned long return_hooker = (unsigned long)&return_to_handler; Loading @@ -24,7 +25,8 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr) if (unlikely(atomic_read(¤t->tracing_graph_pause))) return; if (ftrace_push_return_trace(*parent, self_addr, &trace.depth, 0) == -EBUSY) if (ftrace_push_return_trace(*parent, self_addr, &trace.depth, frame_pointer) == -EBUSY) return; trace.func = self_addr; Loading Loading
arch/blackfin/kernel/ftrace-entry.S +9 −3 Original line number Diff line number Diff line Loading @@ -115,9 +115,12 @@ ENTRY(_ftrace_graph_caller) [--sp] = r1; [--sp] = rets; /* prepare_ftrace_return(unsigned long *parent, unsigned long self_addr) */ r0 = sp; r1 = rets; /* prepare_ftrace_return(parent, self_addr, frame_pointer) */ r0 = sp; /* unsigned long *parent */ r1 = rets; /* unsigned long self_addr */ #ifdef CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST r2 = fp; /* unsigned long frame_pointer */ #endif r0 += 16; /* skip the 4 local regs on stack */ r1 += -MCOUNT_INSN_SIZE; call _prepare_ftrace_return; Loading @@ -136,6 +139,9 @@ ENTRY(_return_to_handler) [--sp] = r1; /* get original return address */ #ifdef CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST r0 = fp; /* Blackfin is sane, so omit this */ #endif call _ftrace_return_to_handler; rets = r0; Loading
arch/blackfin/kernel/ftrace.c +4 −2 Original line number Diff line number Diff line Loading @@ -16,7 +16,8 @@ * Hook the return address and push it in the stack of return addrs * in current thread info. */ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr) void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr, unsigned long frame_pointer) { struct ftrace_graph_ent trace; unsigned long return_hooker = (unsigned long)&return_to_handler; Loading @@ -24,7 +25,8 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr) if (unlikely(atomic_read(¤t->tracing_graph_pause))) return; if (ftrace_push_return_trace(*parent, self_addr, &trace.depth, 0) == -EBUSY) if (ftrace_push_return_trace(*parent, self_addr, &trace.depth, frame_pointer) == -EBUSY) return; trace.func = self_addr; Loading