Lines Matching full:lr
12 * lr), we need to get hold of the function's caller's address.
17 * push {lr}
24 * callee: the original lr needs to be restored when leaving mcount, and no
56 1: mcount_get_lr r1 @ lr of instrumented func
57 mcount_adjust_addr r0, lr @ instrumented function
58 badr lr, 2f
67 str lr, [sp, #-8]! @ store LR as PC and make space for CPSR/OLD_R0,
68 @ OLD_R0 will overwrite previous LR
70 ldr lr, [sp, #8] @ get previous LR
72 str r0, [sp, #8] @ write r0 as OLD_R0 over previous LR
74 str lr, [sp, #-4]! @ store previous LR as LR
76 add lr, sp, #16 @ move in LR the value of SP as it was
77 @ before the push {lr} of the mcount mechanism
79 push {r0-r11, ip, lr}
83 @ R0 | R1 | ... | IP | SP + 4 | previous LR | LR | PSR | OLD_R0 |
90 ldr r1, [sp, #S_LR] @ lr of instrumented func
92 ldr lr, [sp, #S_PC] @ get LR
94 mcount_adjust_addr r0, lr @ instrumented function
108 pop {r0-r11, ip, lr} @ restore r0 through r12
109 ldr lr, [sp], #4 @ restore LR
117 sub r0, fp, #4 @ lr of instrumented routine (parent)
131 pop {r0-r11, ip, lr} @ restore r0 through r12
132 ldr lr, [sp], #4 @ restore LR
142 mcount_get_lr r1 @ lr of instrumented func
143 mcount_adjust_addr r0, lr @ instrumented function
167 sub r0, fp, #4 @ &lr of instrumented routine (&parent)
176 @ called from __mcount, untouched in lr
177 mcount_adjust_addr r1, lr @ instrumented routine (func)
191 * This pad compensates for the push {lr} at the call site. Note that we are
192 * unable to unwind through a function which does not otherwise save its lr.
195 stmdb sp!, {r0-r3, lr}
196 UNWIND(.save {r0-r3, lr})
205 ldr lr, [sp, #4]
212 push {lr}
213 ldr lr, [sp, #4]
263 mov lr, r0 @ r0 has real ret addr
265 ret lr
271 ret lr
275 ret lr