1 .text 2 .thumb 3 .syntax unified 4 thumb2_relax: 5 .macro ls op w=".w" 6 1: 7 \op r1, [r5] 8 \op r1, [r5, #(far_\op + 4)] 9 \op r1, [r5, #far_\op] 10 \op\w r1, [r5, #far_\op] 11 \op r1, [r5, #-far_\op] 12 \op r1, [r5], #far_\op 13 \op r1, [r5], #far_\op 14 \op r1, [r5, #far_\op]! 15 \op r1, [r5, #-far_\op]! 16 \op r1, [r5, r4] 17 \op r1, [r9, ip] 18 \op r1, 1f 19 \op\w r1, 1f 20 \op r8, 1f 21 \op r1, 2f 22 \op r1, 1b 23 .align 2 24 1: 25 nop 26 2: 27 .endm 28 .equ far_ldrb, 0x1f 29 .equ far_ldrsb, 0x1f 30 .equ far_ldrh, 0x3e 31 .equ far_ldrsh, 0x3e 32 .equ far_ldr, 0x7c 33 ls ldrb 34 ls ldrsb 35 ls ldrh 36 ls ldrsh 37 ls ldr 38 .purgem ls 39 1: 40 adr r1, 1f 41 adr.w r1, 1f 42 adr r8, 1f 43 adr r1, 2f 44 adr r1, 1b 45 .align 2 46 1: 47 nop 48 2: 49 nop 50 @ Relaxation with conflicting alignment requirements. 51 adr r1, 1f 52 adr r1, 2f 53 1: 54 nop 55 2: 56 nop 57