123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- .section ".tdata", "awT", @progbits
- .globl sg1, sg2
- .globl sh1, sh2
- .hidden sh1, sh2
- sg1: .long 17
- sg2: .long 18
- sl1: .long 65
- sl2: .long 66
- sh1: .long 257
- sh2: .long 258
- .text
- .align 1
- .globl fn1
- .type fn1,@function
- fn1:
- mov.l r12,@-r15
- mov.l r14,@-r15
- sts.l pr,@-r15
- mova .L3,r0
- mov.l .L3,r12
- add r0,r12
- mov r15,r14
- nop;nop;nop;nop
- ! GD
- mov.l 1f,r4
- mova 2f,r0
- mov.l 2f,r1
- add r0,r1
- jsr @r1
- add r12,r4
- bra 3f
- nop
- .align 2
- 1: .long sg1@TLSGD
- 2: .long __tls_get_addr@PLT
- 3:
- nop;nop;nop;nop
- ! GD -> IE because variable is referenced through @GOTTPOFF too
- mov.l 1f,r4
- mova 2f,r0
- mov.l 2f,r1
- add r0,r1
- jsr @r1
- add r12,r4
- bra 3f
- nop
- .align 2
- 1: .long sg2@TLSGD
- 2: .long __tls_get_addr@PLT
- 3:
- nop;nop;nop;nop
- ! GD against local variable
- mov.l 1f,r4
- mova 2f,r0
- mov.l 2f,r1
- add r0,r1
- jsr @r1
- add r12,r4
- bra 3f
- nop
- .align 2
- 1: .long sl1@TLSGD
- 2: .long __tls_get_addr@PLT
- 3:
- nop;nop;nop;nop
- ! GD -> IE against local variable referenced through @GOTTPOFF too
- mov.l 1f,r4
- mova 2f,r0
- mov.l 2f,r1
- add r0,r1
- jsr @r1
- add r12,r4
- bra 3f
- nop
- .align 2
- 1: .long sl2@TLSGD
- 2: .long __tls_get_addr@PLT
- 3:
- nop;nop;nop;nop
- ! GD against hidden and local variable
- mov.l 1f,r4
- mova 2f,r0
- mov.l 2f,r1
- add r0,r1
- jsr @r1
- add r12,r4
- bra 3f
- nop
- .align 2
- 1: .long sh1@TLSGD
- 2: .long __tls_get_addr@PLT
- 3:
- nop;nop;nop;nop
- ! GD -> IE against hidden and local variable referenced through
- ! @GOTTPOFF too
- mov.l 1f,r4
- mova 2f,r0
- mov.l 2f,r1
- add r0,r1
- jsr @r1
- add r12,r4
- bra 3f
- nop
- .align 2
- 1: .long sh2@TLSGD
- 2: .long __tls_get_addr@PLT
- 3:
- nop;nop;nop;nop
- ! GD against hidden but not local variable
- mov.l 1f,r4
- mova 2f,r0
- mov.l 2f,r1
- add r0,r1
- jsr @r1
- add r12,r4
- bra 3f
- nop
- .align 2
- 1: .long sH1@TLSGD
- 2: .long __tls_get_addr@PLT
- 3:
- nop;nop;nop;nop
- ! GD -> IE against hidden but not local variable referenced through
- ! @GOTTPOFF too
- mov.l 1f,r4
- mova 2f,r0
- mov.l 2f,r1
- add r0,r1
- jsr @r1
- add r12,r4
- bra 3f
- nop
- .align 2
- 1: .long sH2@TLSGD
- 2: .long __tls_get_addr@PLT
- 3:
- nop;nop;nop;nop
- ! LD
- mov.l 1f,r4
- mova 2f,r0
- mov.l 2f,r1
- add r0,r1
- jsr @r1
- add r12,r4
- bra 3f
- nop
- .align 2
- 1: .long sl1@TLSLDM
- 2: .long __tls_get_addr@PLT
- 3:
- nop;nop
- mov.l .L4,r1
- add r0,r1
- nop;nop
- mov.l .L5,r2
- add r0,r2
- nop;nop;nop;nop
- ! LD against hidden and local variables
- mov.l 1f,r4
- mova 2f,r0
- mov.l 2f,r1
- add r0,r1
- jsr @r1
- add r12,r4
- bra 3f
- nop
- .align 2
- 1: .long sl1@TLSLDM
- 2: .long __tls_get_addr@PLT
- 3:
- nop;nop
- mov.l .L6,r1
- add r0,r1
- nop;nop
- mov.l .L7,r2
- add r0,r2
- nop;nop;nop;nop
- ! LD against hidden but not local variables
- mov.l 1f,r4
- mova 2f,r0
- mov.l 2f,r1
- add r0,r1
- jsr @r1
- add r12,r4
- bra 3f
- nop
- .align 2
- 1: .long sH1@TLSLDM
- 2: .long __tls_get_addr@PLT
- 3:
- nop;nop
- mov.l .L8,r1
- add r0,r1
- nop;nop
- mov.l .L9,r2
- add r0,r2
- 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 sg2@GOTTPOFF
- 2:
- nop;nop;nop;nop
- ! @GOTTPOFF IE against local var
- mov.l 1f,r0
- stc gbr,r1
- mov.l @(r0,r12),r0
- bra 2f
- add r0,r1
- .align 2
- 1: .long sl2@GOTTPOFF
- 2:
- nop;nop;nop;nop
- ! @GOTTPOFF IE against hidden and 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
- ! @GOTTPOFF IE 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
- mov r14,r15
- lds.l @r15+,pr
- mov.l @r15+,r14
- rts
- mov.l @r15+,r12
- .align 2
- .L3: .long _GLOBAL_OFFSET_TABLE_
- .L4: .long sl1@DTPOFF
- .L5: .long sl1@DTPOFF + 4
- .L6: .long sh1@DTPOFF
- .L7: .long sh2@DTPOFF
- .L8: .long sH1@DTPOFF
- .L9: .long sH2@DTPOFF
|