aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/entry-common.S
diff options
context:
space:
mode:
authorRabin Vincent <rabin@rab.in>2010-11-06 13:33:21 -0400
committerRabin Vincent <rabin@rab.in>2010-11-19 11:13:27 -0500
commitdd686eb13959e49a1112fd608c124ab711050582 (patch)
tree58dfcbac57ace3dcb449593ca333b98c147a2410 /arch/arm/kernel/entry-common.S
parent376cfa8730c08c0394d0aa1d4a80fd8c9971f323 (diff)
ARM: ftrace: graph tracer + dynamic ftrace
Support the graph tracer + dynamic ftrace combination on ARM. Signed-off-by: Rabin Vincent <rabin@rab.in>
Diffstat (limited to 'arch/arm/kernel/entry-common.S')
-rw-r--r--arch/arm/kernel/entry-common.S12
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
index 9f1766211668..aae802ee12f8 100644
--- a/arch/arm/kernel/entry-common.S
+++ b/arch/arm/kernel/entry-common.S
@@ -183,12 +183,24 @@ ENDPROC(ret_from_fork)
183ftrace_call\suffix: 183ftrace_call\suffix:
184 bl ftrace_stub 184 bl ftrace_stub
185 185
186#ifdef CONFIG_FUNCTION_GRAPH_TRACER
187 .globl ftrace_graph_call\suffix
188ftrace_graph_call\suffix:
189 mov r0, r0
190#endif
191
186 mcount_exit 192 mcount_exit
187.endm 193.endm
188 194
189.macro __ftrace_graph_caller 195.macro __ftrace_graph_caller
190 sub r0, fp, #4 @ &lr of instrumented routine (&parent) 196 sub r0, fp, #4 @ &lr of instrumented routine (&parent)
197#ifdef CONFIG_DYNAMIC_FTRACE
198 @ called from __ftrace_caller, saved in mcount_enter
199 ldr r1, [sp, #16] @ instrumented routine (func)
200#else
201 @ called from __mcount, untouched in lr
191 mov r1, lr @ instrumented routine (func) 202 mov r1, lr @ instrumented routine (func)
203#endif
192 sub r1, r1, #MCOUNT_INSN_SIZE 204 sub r1, r1, #MCOUNT_INSN_SIZE
193 mov r2, fp @ frame pointer 205 mov r2, fp @ frame pointer
194 bl prepare_ftrace_return 206 bl prepare_ftrace_return