Lines Matching +full:ip +full:- +full:block
1 /* SPDX-License-Identifier: GPL-2.0-only */
14 * -------------------
67 * Correction to be applied to the "ip" register when branching into
69 * than one 32bit instruction in Thumb-2)
78 usave r4, lr @ in first stmdb block
82 ands ip, r0, #3
85 ands ip, r1, #3
89 stmfd sp!, {r5 - r8}
94 UNWIND( .save {r5 - r8} ) @ in second stmfd block
97 CALGN( ands ip, r0, #31 )
98 CALGN( rsb r3, ip, #32 )
103 CALGN( add pc, r4, ip )
113 4: ldr8w r1, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f
115 str8w r0, r3, r4, r5, r6, r7, r8, ip, lr, abort=20f
120 5: ands ip, r2, #28
121 rsb ip, ip, #32
123 lsl ip, ip, #LDR1W_SHIFT
125 addne pc, pc, ip @ C is always clear here
140 lsl ip, ip, #STR1W_SHIFT - LDR1W_SHIFT
142 lsr ip, ip, #LDR1W_SHIFT - STR1W_SHIFT
144 add pc, pc, ip
159 7: ldmfd sp!, {r5 - r8}
160 UNWIND( .fnend ) @ end of second stmfd block
163 usave r4, lr @ still in first stmdb block
167 ldr1b r1, ip, cs, abort=21f
170 str1b r0, ip, cs, abort=21f
174 9: rsb ip, ip, #4
175 cmp ip, #2
181 subs r2, r2, ip
184 ands ip, r1, #3
188 cmp ip, #2
198 usave r4, lr @ still in first stmdb block
202 CALGN( ands ip, r0, #31 )
203 CALGN( rsb ip, ip, #32 )
204 CALGN( sbcsne r4, ip, r2 ) @ C is always set here
205 CALGN( subcc r2, r2, ip )
208 11: stmfd sp!, {r5 - r9}
213 UNWIND( .save {r5 - r9} ) @ in new second stmfd block
225 ldr4w r1, r8, r9, ip, lr, abort=19f
238 orr r9, r9, ip, lspush #\push
239 mov ip, ip, lspull #\pull
240 orr ip, ip, lr, lspush #\push
241 str8w r0, r3, r4, r5, r6, r7, r8, r9, ip, abort=19f
246 ldmfd sp!, {r5 - r9}
247 UNWIND( .fnend ) @ end of the second stmfd block
250 usave r4, lr @ still in first stmdb block
251 14: ands ip, r2, #28
256 subs ip, ip, #4
285 19: ldmfd sp!, {r5 - r9}
287 20: ldmfd sp!, {r5 - r8}