| .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 |