Commit 9aa791c8 authored by Richard Weinberger's avatar Richard Weinberger Committed by Russell King (Oracle)
Browse files

ARM: 9457/1: ftrace: Implement HAVE_FUNCTION_GRAPH_FREGS



Enable support for ftrace's funcgraph-retval feature by capturing r0-r3
and fp.
Since ARM does not provide its own __arch_ftrace_regs structure,
we instead populate pt_regs with the registers required by ftrace.

Cc: Donglin Peng <pengdonglin@sangfor.com.cn>
Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
Signed-off-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
parent fb0e5f26
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -108,6 +108,7 @@ config ARM
	select HAVE_GUP_FAST if ARM_LPAE
	select HAVE_FUNCTION_ERROR_INJECTION
	select HAVE_FUNCTION_GRAPH_TRACER
	select HAVE_FUNCTION_GRAPH_FREGS
	select HAVE_FUNCTION_TRACER if !XIP_KERNEL
	select HAVE_GCC_PLUGINS
	select HAVE_HW_BREAKPOINT if PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7)
+14 −4
Original line number Diff line number Diff line
@@ -257,11 +257,21 @@ ENDPROC(ftrace_graph_regs_caller)

#ifdef CONFIG_FUNCTION_GRAPH_TRACER
ENTRY(return_to_handler)
	stmdb	sp!, {r0-r3}
	add	r0, sp, #16		@ sp at exit of instrumented routine
	mov	ip, sp				@ sp at exit of instrumented routine
	sub	sp, #PT_REGS_SIZE
	str	r0, [sp, #S_R0]
	str	r1, [sp, #S_R1]
	str	r2, [sp, #S_R2]
	str	r3, [sp, #S_R3]
	str	ip, [sp, #S_FP]
	mov	r0, sp
	bl	ftrace_return_to_handler
	mov	lr, r0				@ r0 has real ret addr
	ldmia	sp!, {r0-r3}
	ldr	r3, [sp, #S_R3]
	ldr	r2, [sp, #S_R2]
	ldr	r1, [sp, #S_R1]
	ldr	r0, [sp, #S_R0]
	add	sp, sp, #PT_REGS_SIZE		@ restore stack pointer
	ret	lr
ENDPROC(return_to_handler)
#endif