提交 181f817e 编写于 作者: U Uwe Kleine-König

[ARM] support tracing when using newer compilers

Since gcc 4.4 the name and calling convention for function profiling
on ARM changed.  With this patch both types are supported.

See http://sourceware.org/ml/libc-ports/2008-04/msg00009.html for some
details.
Lightly-Tested-by: NAnand Gadiyar <gadiyar@ti.com>
Tested-by: NKevin Hilman <khilman@deeprootsystems.com>
Signed-off-by: NUwe Kleine-König <u.kleine-koenig@pengutronix.de>
上级 b88fb83b
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
extern void mcount(void); extern void mcount(void);
extern void __gnu_mcount_nc(void);
#endif #endif
#endif #endif
......
...@@ -186,4 +186,5 @@ EXPORT_SYMBOL(_find_next_bit_be); ...@@ -186,4 +186,5 @@ EXPORT_SYMBOL(_find_next_bit_be);
#ifdef CONFIG_FUNCTION_TRACER #ifdef CONFIG_FUNCTION_TRACER
EXPORT_SYMBOL(mcount); EXPORT_SYMBOL(mcount);
EXPORT_SYMBOL(__gnu_mcount_nc);
#endif #endif
...@@ -132,6 +132,25 @@ ftrace_call: ...@@ -132,6 +132,25 @@ ftrace_call:
#else #else
ENTRY(__gnu_mcount_nc)
stmdb sp!, {r0-r3, lr}
ldr r0, =ftrace_trace_function
ldr r2, [r0]
adr r0, ftrace_stub
cmp r0, r2
bne gnu_trace
ldmia sp!, {r0-r3, ip, lr}
bx ip
gnu_trace:
ldr r1, [sp, #20] @ lr of instrumented routine
mov r0, lr
sub r0, r0, #MCOUNT_INSN_SIZE
mov lr, pc
mov pc, r2
ldmia sp!, {r0-r3, ip, lr}
bx ip
ENTRY(mcount) ENTRY(mcount)
stmdb sp!, {r0-r3, lr} stmdb sp!, {r0-r3, lr}
ldr r0, =ftrace_trace_function ldr r0, =ftrace_trace_function
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册