Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 181f817e authored by Uwe Kleine-König's avatar Uwe Kleine-König
Browse files

[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: default avatarAnand Gadiyar <gadiyar@ti.com>
Tested-by: default avatarKevin Hilman <khilman@deeprootsystems.com>
Signed-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
parent b88fb83b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@

#ifndef __ASSEMBLY__
extern void mcount(void);
extern void __gnu_mcount_nc(void);
#endif

#endif
+1 −0
Original line number Diff line number Diff line
@@ -186,4 +186,5 @@ EXPORT_SYMBOL(_find_next_bit_be);

#ifdef CONFIG_FUNCTION_TRACER
EXPORT_SYMBOL(mcount);
EXPORT_SYMBOL(__gnu_mcount_nc);
#endif
+19 −0
Original line number Diff line number Diff line
@@ -132,6 +132,25 @@ ftrace_call:

#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)
	stmdb sp!, {r0-r3, lr}
	ldr r0, =ftrace_trace_function