mirror of
https://github.com/torvalds/linux.git
synced 2026-01-12 00:42:35 +08:00
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: Richard Weinberger <richard@nod.at> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
This commit is contained in:
committed by
Russell King (Oracle)
parent
fb0e5f266e
commit
9aa791c8d7
@@ -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)
|
||||
|
||||
@@ -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}
|
||||
mov lr, r0 @ r0 has real ret addr
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user