184 lines
4.8 KiB
ArmAsm
184 lines
4.8 KiB
ArmAsm
.section .tbss,"awT",@nobits
|
|
.align 4
|
|
.type l, @object
|
|
.size l, 4
|
|
l:
|
|
.zero 4
|
|
.align 4
|
|
.globl i
|
|
.type i, @object
|
|
.size i, 4
|
|
i:
|
|
.zero 4
|
|
.text
|
|
.globl _start
|
|
_start:
|
|
call #gettlsoff(l+1)
|
|
call #gettlsoff(l+1+4096)
|
|
call #gettlsoff(l+1+65536)
|
|
|
|
sethi.p #gottlsdeschi(l+2), gr14
|
|
setlo #gottlsdesclo(l+2), gr14
|
|
ldd #tlsdesc(l+2)@(gr15, gr14), gr8
|
|
calll #gettlsoff(l+2)@(gr8, gr0)
|
|
|
|
sethi.p #gottlsdeschi(l+2+4096), gr14
|
|
setlo #gottlsdesclo(l+2+4096), gr14
|
|
ldd #tlsdesc(l+2+4096)@(gr15, gr14), gr8
|
|
calll #gettlsoff(l+2+4096)@(gr8, gr0)
|
|
|
|
sethi.p #gottlsdeschi(l+2+65536), gr14
|
|
setlo #gottlsdesclo(l+2+65536), gr14
|
|
ldd #tlsdesc(l+2+65536)@(gr15, gr14), gr8
|
|
calll #gettlsoff(l+2+65536)@(gr8, gr0)
|
|
|
|
lddi.p @(gr15, #gottlsdesc12(l+3)), gr8
|
|
setlos #gottlsdesclo(l+3), gr14
|
|
calll #gettlsoff(l+3)@(gr8, gr0)
|
|
|
|
lddi.p @(gr15, #gottlsdesc12(l+3+4096)), gr8
|
|
setlos #gottlsdesclo(l+3+4096), gr14
|
|
calll #gettlsoff(l+3+4096)@(gr8, gr0)
|
|
|
|
lddi.p @(gr15, #gottlsdesc12(l+3+65536)), gr8
|
|
setlos #gottlsdesclo(l+3+65536), gr14
|
|
calll #gettlsoff(l+3+65536)@(gr8, gr0)
|
|
|
|
sethi #tlsmoffhi(l+4), gr9
|
|
setlo #tlsmofflo(l+4), gr9
|
|
|
|
sethi #tlsmoffhi(l+4+4096), gr9
|
|
setlo #tlsmofflo(l+4+4096), gr9
|
|
|
|
sethi #tlsmoffhi(l+4+65536), gr9
|
|
setlo #tlsmofflo(l+4+65536), gr9
|
|
|
|
call #gettlsoff(i+1)
|
|
call #gettlsoff(i+1+4096)
|
|
call #gettlsoff(i+1+65536)
|
|
|
|
sethi.p #gottlsdeschi(i+2), gr14
|
|
setlo #gottlsdesclo(i+2), gr14
|
|
ldd #tlsdesc(i+2)@(gr15, gr14), gr8
|
|
calll #gettlsoff(i+2)@(gr8, gr0)
|
|
|
|
sethi.p #gottlsdeschi(i+2+4096), gr14
|
|
setlo #gottlsdesclo(i+2+4096), gr14
|
|
ldd #tlsdesc(i+2+4096)@(gr15, gr14), gr8
|
|
calll #gettlsoff(i+2+4096)@(gr8, gr0)
|
|
|
|
sethi.p #gottlsdeschi(i+2+65536), gr14
|
|
setlo #gottlsdesclo(i+2+65536), gr14
|
|
ldd #tlsdesc(i+2+65536)@(gr15, gr14), gr8
|
|
calll #gettlsoff(i+2+65536)@(gr8, gr0)
|
|
|
|
lddi.p @(gr15, #gottlsdesc12(i+3)), gr8
|
|
setlos #gottlsdesclo(i+3), gr14
|
|
calll #gettlsoff(i+3)@(gr8, gr0)
|
|
|
|
lddi.p @(gr15, #gottlsdesc12(i+3+4096)), gr8
|
|
setlos #gottlsdesclo(i+3+4096), gr14
|
|
calll #gettlsoff(i+3+4096)@(gr8, gr0)
|
|
|
|
lddi.p @(gr15, #gottlsdesc12(i+3+65536)), gr8
|
|
setlos #gottlsdesclo(i+3+65536), gr14
|
|
calll #gettlsoff(i+3+65536)@(gr8, gr0)
|
|
|
|
sethi #tlsmoffhi(i+4), gr9
|
|
setlo #tlsmofflo(i+4), gr9
|
|
|
|
sethi #tlsmoffhi(i+4+4096), gr9
|
|
setlo #tlsmofflo(i+4+4096), gr9
|
|
|
|
sethi #tlsmoffhi(i+4+65536), gr9
|
|
setlo #tlsmofflo(i+4+65536), gr9
|
|
|
|
call #gettlsoff(0+1)
|
|
call #gettlsoff(0+1+4096)
|
|
call #gettlsoff(0+1+65536)
|
|
|
|
sethi.p #gottlsdeschi(0+2), gr14
|
|
setlo #gottlsdesclo(0+2), gr14
|
|
ldd #tlsdesc(0+2)@(gr15, gr14), gr8
|
|
calll #gettlsoff(0+2)@(gr8, gr0)
|
|
|
|
sethi.p #gottlsdeschi(0+2+4096), gr14
|
|
setlo #gottlsdesclo(0+2+4096), gr14
|
|
ldd #tlsdesc(0+2+4096)@(gr15, gr14), gr8
|
|
calll #gettlsoff(0+2+4096)@(gr8, gr0)
|
|
|
|
sethi.p #gottlsdeschi(0+2+65536), gr14
|
|
setlo #gottlsdesclo(0+2+65536), gr14
|
|
ldd #tlsdesc(0+2+65536)@(gr15, gr14), gr8
|
|
calll #gettlsoff(0+2+65536)@(gr8, gr0)
|
|
|
|
lddi.p @(gr15, #gottlsdesc12(0+3)), gr8
|
|
setlos #gottlsdesclo(0+3), gr14
|
|
calll #gettlsoff(0+3)@(gr8, gr0)
|
|
|
|
lddi.p @(gr15, #gottlsdesc12(0+3+4096)), gr8
|
|
setlos #gottlsdesclo(0+3+4096), gr14
|
|
calll #gettlsoff(0+3+4096)@(gr8, gr0)
|
|
|
|
lddi.p @(gr15, #gottlsdesc12(0+3+65536)), gr8
|
|
setlos #gottlsdesclo(0+3+65536), gr14
|
|
calll #gettlsoff(0+3+65536)@(gr8, gr0)
|
|
|
|
sethi #tlsmoffhi(0+4), gr9
|
|
setlo #tlsmofflo(0+4), gr9
|
|
|
|
sethi #tlsmoffhi(0+4+4096), gr9
|
|
setlo #tlsmofflo(0+4+4096), gr9
|
|
|
|
sethi #tlsmoffhi(0+4+65536), gr9
|
|
setlo #tlsmofflo(0+4+65536), gr9
|
|
|
|
call #gettlsoff(x+1)
|
|
call #gettlsoff(x+1+4096)
|
|
call #gettlsoff(x+1+65536)
|
|
|
|
sethi.p #gottlsdeschi(x+2), gr14
|
|
setlo #gottlsdesclo(x+2), gr14
|
|
ldd #tlsdesc(x+2)@(gr15, gr14), gr8
|
|
calll #gettlsoff(x+2)@(gr8, gr0)
|
|
|
|
sethi.p #gottlsdeschi(x+2+4096), gr14
|
|
setlo #gottlsdesclo(x+2+4096), gr14
|
|
ldd #tlsdesc(x+2+4096)@(gr15, gr14), gr8
|
|
calll #gettlsoff(x+2+4096)@(gr8, gr0)
|
|
|
|
sethi.p #gottlsdeschi(x+2+65536), gr14
|
|
setlo #gottlsdesclo(x+2+65536), gr14
|
|
ldd #tlsdesc(x+2+65536)@(gr15, gr14), gr8
|
|
calll #gettlsoff(x+2+65536)@(gr8, gr0)
|
|
|
|
lddi.p @(gr15, #gottlsdesc12(x+3)), gr8
|
|
setlos #gottlsdesclo(x+3), gr14
|
|
calll #gettlsoff(x+3)@(gr8, gr0)
|
|
|
|
lddi.p @(gr15, #gottlsdesc12(x+3+4096)), gr8
|
|
setlos #gottlsdesclo(x+3+4096), gr14
|
|
calll #gettlsoff(x+3+4096)@(gr8, gr0)
|
|
|
|
lddi.p @(gr15, #gottlsdesc12(x+3+65536)), gr8
|
|
setlos #gottlsdesclo(x+3+65536), gr14
|
|
calll #gettlsoff(x+3+65536)@(gr8, gr0)
|
|
|
|
.ifdef static_tls
|
|
ldi @(gr15, #gottlsoff12(l+1)), gr9
|
|
ldi @(gr15, #gottlsoff12(l+1+65536)), gr9
|
|
ldi @(gr15, #gottlsoff12(i+1)), gr9
|
|
ldi @(gr15, #gottlsoff12(i+1+65536)), gr9
|
|
ldi @(gr15, #gottlsoff12(0+1)), gr9
|
|
ldi @(gr15, #gottlsoff12(0+1+65536)), gr9
|
|
ldi @(gr15, #gottlsoff12(x+1)), gr9
|
|
ldi @(gr15, #gottlsoff12(x+1+65536)), gr9
|
|
|
|
setlos #gottlsofflo(l+1+4096), gr8
|
|
ld #tlsoff(l+1+4096)@(gr15, gr8), gr9
|
|
|
|
sethi #gottlsoffhi(i+1+4096), gr8
|
|
setlo #gottlsofflo(i+1+4096), gr8
|
|
ld #tlsoff(i+1+4096)@(gr15, gr8), gr9
|
|
.endif
|