|
@@ -178,6 +178,24 @@ ENTRY(ftrace_stub)
|
|
ENDPROC(ftrace_stub)
|
|
ENDPROC(ftrace_stub)
|
|
|
|
|
|
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
|
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
|
|
|
+ /* save return value regs*/
|
|
|
|
+ .macro save_return_regs
|
|
|
|
+ sub sp, sp, #64
|
|
|
|
+ stp x0, x1, [sp]
|
|
|
|
+ stp x2, x3, [sp, #16]
|
|
|
|
+ stp x4, x5, [sp, #32]
|
|
|
|
+ stp x6, x7, [sp, #48]
|
|
|
|
+ .endm
|
|
|
|
+
|
|
|
|
+ /* restore return value regs*/
|
|
|
|
+ .macro restore_return_regs
|
|
|
|
+ ldp x0, x1, [sp]
|
|
|
|
+ ldp x2, x3, [sp, #16]
|
|
|
|
+ ldp x4, x5, [sp, #32]
|
|
|
|
+ ldp x6, x7, [sp, #48]
|
|
|
|
+ add sp, sp, #64
|
|
|
|
+ .endm
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* void ftrace_graph_caller(void)
|
|
* void ftrace_graph_caller(void)
|
|
*
|
|
*
|
|
@@ -204,11 +222,11 @@ ENDPROC(ftrace_graph_caller)
|
|
* only when CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST is enabled.
|
|
* only when CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST is enabled.
|
|
*/
|
|
*/
|
|
ENTRY(return_to_handler)
|
|
ENTRY(return_to_handler)
|
|
- str x0, [sp, #-16]!
|
|
|
|
|
|
+ save_return_regs
|
|
mov x0, x29 // parent's fp
|
|
mov x0, x29 // parent's fp
|
|
bl ftrace_return_to_handler// addr = ftrace_return_to_hander(fp);
|
|
bl ftrace_return_to_handler// addr = ftrace_return_to_hander(fp);
|
|
mov x30, x0 // restore the original return address
|
|
mov x30, x0 // restore the original return address
|
|
- ldr x0, [sp], #16
|
|
|
|
|
|
+ restore_return_regs
|
|
ret
|
|
ret
|
|
END(return_to_handler)
|
|
END(return_to_handler)
|
|
#endif /* CONFIG_FUNCTION_GRAPH_TRACER */
|
|
#endif /* CONFIG_FUNCTION_GRAPH_TRACER */
|