File tree Expand file tree Collapse file tree 1 file changed +20
-2
lines changed Expand file tree Collapse file tree 1 file changed +20
-2
lines changed Original file line number Diff line number Diff line change @@ -178,6 +178,24 @@ ENTRY(ftrace_stub)
178
178
ENDPROC(ftrace_stub)
179
179
180
180
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
181
+ / * save return value regs * /
182
+ .macro save_return_regs
183
+ sub sp , sp , # 64
184
+ stp x0 , x1 , [ sp ]
185
+ stp x2 , x3 , [ sp , # 16 ]
186
+ stp x4 , x5 , [ sp , # 32 ]
187
+ stp x6 , x7 , [ sp , # 48 ]
188
+ .endm
189
+
190
+ / * restore return value regs * /
191
+ .macro restore_return_regs
192
+ ldp x0 , x1 , [ sp ]
193
+ ldp x2 , x3 , [ sp , # 16 ]
194
+ ldp x4 , x5 , [ sp , # 32 ]
195
+ ldp x6 , x7 , [ sp , # 48 ]
196
+ add sp , sp , # 64
197
+ .endm
198
+
181
199
/ *
182
200
* void ftrace_graph_caller(void)
183
201
*
@@ -204,11 +222,11 @@ ENDPROC(ftrace_graph_caller)
204
222
* only when CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST is enabled.
205
223
* /
206
224
ENTRY(return_to_handler)
207
- str x0 , [ sp , # - 16 ] !
225
+ save_return_regs
208
226
mov x0 , x29 // parent's fp
209
227
bl ftrace_return_to_handler// addr = ftrace_return_to_hander(fp) ;
210
228
mov x30 , x0 // restore the original return address
211
- ldr x0 , [ sp ], # 16
229
+ restore_return_regs
212
230
ret
213
231
END(return_to_handler)
214
232
#endif / * CONFIG_FUNCTION_GRAPH_TRACER * /
You can’t perform that action at this time.
0 commit comments