diff options
author | Mike Frysinger <vapier@gentoo.org> | 2010-01-22 07:59:32 -0500 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2010-03-09 00:30:50 -0500 |
commit | b73faf74493fd1bc75a8938aa5d296facf50a650 (patch) | |
tree | 69edd54da1d535661ac5a14ee3aa27e5e4ca2337 /arch/blackfin/kernel/ftrace-entry.S | |
parent | aebfef03249819886a7f9c981940cbd48d82ea47 (diff) |
Blackfin: support new ftrace frame pointer semantics
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'arch/blackfin/kernel/ftrace-entry.S')
-rw-r--r-- | arch/blackfin/kernel/ftrace-entry.S | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/arch/blackfin/kernel/ftrace-entry.S b/arch/blackfin/kernel/ftrace-entry.S index db3a51b0af21..d66446b572c0 100644 --- a/arch/blackfin/kernel/ftrace-entry.S +++ b/arch/blackfin/kernel/ftrace-entry.S | |||
@@ -115,9 +115,12 @@ ENTRY(_ftrace_graph_caller) | |||
115 | [--sp] = r1; | 115 | [--sp] = r1; |
116 | [--sp] = rets; | 116 | [--sp] = rets; |
117 | 117 | ||
118 | /* prepare_ftrace_return(unsigned long *parent, unsigned long self_addr) */ | 118 | /* prepare_ftrace_return(parent, self_addr, frame_pointer) */ |
119 | r0 = sp; | 119 | r0 = sp; /* unsigned long *parent */ |
120 | r1 = rets; | 120 | r1 = rets; /* unsigned long self_addr */ |
121 | #ifdef CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST | ||
122 | r2 = fp; /* unsigned long frame_pointer */ | ||
123 | #endif | ||
121 | r0 += 16; /* skip the 4 local regs on stack */ | 124 | r0 += 16; /* skip the 4 local regs on stack */ |
122 | r1 += -MCOUNT_INSN_SIZE; | 125 | r1 += -MCOUNT_INSN_SIZE; |
123 | call _prepare_ftrace_return; | 126 | call _prepare_ftrace_return; |
@@ -136,6 +139,9 @@ ENTRY(_return_to_handler) | |||
136 | [--sp] = r1; | 139 | [--sp] = r1; |
137 | 140 | ||
138 | /* get original return address */ | 141 | /* get original return address */ |
142 | #ifdef CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST | ||
143 | r0 = fp; /* Blackfin is sane, so omit this */ | ||
144 | #endif | ||
139 | call _ftrace_return_to_handler; | 145 | call _ftrace_return_to_handler; |
140 | rets = r0; | 146 | rets = r0; |
141 | 147 | ||