91 lines
1.4 KiB
ArmAsm
91 lines
1.4 KiB
ArmAsm
|
.section ".tbss", "awT", @nobits
|
||
|
.globl bg1, bg2
|
||
|
bg1: .space 4
|
||
|
bg2: .space 4
|
||
|
bl1: .space 4
|
||
|
bl2: .space 4
|
||
|
.text
|
||
|
.globl _start
|
||
|
.type _start,@function
|
||
|
_start:
|
||
|
mov.l r12,@-r15
|
||
|
mov.l r14,@-r15
|
||
|
mov r15,r14
|
||
|
! Set up .GOT pointer for non-pic @gottpoff sequences
|
||
|
mova .L3,r0
|
||
|
mov.l .L3,r12
|
||
|
add r0,r12
|
||
|
nop;nop;nop;nop
|
||
|
|
||
|
! @GOTTPOFF IE against global var
|
||
|
mov.l 1f,r0
|
||
|
stc gbr,r1
|
||
|
mov.l @(r0,r12),r0
|
||
|
bra 2f
|
||
|
add r0,r1
|
||
|
.align 2
|
||
|
1: .long sG3@GOTTPOFF
|
||
|
2:
|
||
|
nop;nop;nop;nop
|
||
|
|
||
|
! @GOTTPOFF IE -> LE against global var defined in exec
|
||
|
mov.l 1f,r0
|
||
|
stc gbr,r1
|
||
|
mov.l @(r0,r12),r0
|
||
|
bra 2f
|
||
|
add r0,r1
|
||
|
.align 2
|
||
|
1: .long bg1@GOTTPOFF
|
||
|
2:
|
||
|
nop;nop;nop;nop
|
||
|
|
||
|
! @GOTTPOFF IE -> LE against local var
|
||
|
mov.l 1f,r0
|
||
|
stc gbr,r1
|
||
|
mov.l @(r0,r12),r0
|
||
|
bra 2f
|
||
|
add r0,r1
|
||
|
.align 2
|
||
|
1: .long bl2@GOTTPOFF
|
||
|
2:
|
||
|
nop;nop;nop;nop
|
||
|
|
||
|
! @GOTTPOFF IE -> LE against hidden but not local var
|
||
|
mov.l 1f,r0
|
||
|
stc gbr,r1
|
||
|
mov.l @(r0,r12),r0
|
||
|
bra 2f
|
||
|
add r0,r1
|
||
|
.align 2
|
||
|
1: .long sh2@GOTTPOFF
|
||
|
2:
|
||
|
nop;nop;nop;nop
|
||
|
|
||
|
! LE @TPOFF, global var defined in exec
|
||
|
stc gbr,r1
|
||
|
mov.l .L4,r0
|
||
|
add r1,r0
|
||
|
nop;nop;nop;nop
|
||
|
|
||
|
! LE @TPOFF, local var
|
||
|
stc gbr,r1
|
||
|
mov.l .L5,r0
|
||
|
add r1,r0
|
||
|
nop;nop;nop;nop
|
||
|
|
||
|
! LE @TPOFF, hidden var defined in exec
|
||
|
stc gbr,r1
|
||
|
mov.l .L6,r0
|
||
|
add r1,r0
|
||
|
nop;nop;nop;nop
|
||
|
|
||
|
mov r14,r15
|
||
|
rts
|
||
|
mov.l @r15+,r14
|
||
|
|
||
|
.align 2
|
||
|
.L3: .long _GLOBAL_OFFSET_TABLE_
|
||
|
.L4: .long sg1@TPOFF
|
||
|
.L5: .long bl1@TPOFF
|
||
|
.L6: .long sh1@TPOFF
|