f4e584bd00
ld-mips-elf/tlslib-o32.got, ld-mips-elf/tlslib-o32.d, ld-mips-elf/tlslib-o32.s, ld-mips-elf/mips-lib.ld, ld-mips-elf/tlsbin-o32.got, ld-mips-elf/tlsdyn-o32.d, ld-mips-elf/tlsdyn-o32.got, ld-mips-elf/tlsbin-o32.d, ld-mips-elf/tlsdyn-o32.s, ld-mips-elf/tls-multi-got-1.got, ld-mips-elf/tls-multi-got-1-1.s, ld-mips-elf/tls-multi-got-1.d, ld-mips-elf/tls-multi-got-1.r, ld-mips-elf/tls-multi-got-1-2.s, ld-mips-elf/tlslib-o32-ver.got, ld-mips-elf/tlslib.ver, ld-mips-elf/tlslib-o32-hidden.got, ld-mips-elf/tlslib-hidden.ver, ld-mips-elf/tlsdyn-o32-1.d, ld-mips-elf/tlsdyn-o32-3.got, ld-mips-elf/tlsdyn-o32-2.d, ld-mips-elf/tlsdyn-o32-2.s, ld-mips-elf/tlsdyn-o32-3.d, ld-mips-elf/tlsdyn-o32-1.got, ld-mips-elf/tlsdyn-o32-2.got: New files. * ld-mips-elf/mips-elf.exp: Run the new tests.
96 lines
1.5 KiB
ArmAsm
96 lines
1.5 KiB
ArmAsm
.file 1 "tlsbin-o32.s"
|
|
.abicalls
|
|
.text
|
|
.align 2
|
|
.globl __start
|
|
.ent __start
|
|
.type __start,@function
|
|
__start:
|
|
.frame $fp,16,$31
|
|
.mask 0x40000000,-8
|
|
.fmask 0x00000000,0
|
|
.set noreorder
|
|
.cpload $25
|
|
.set reorder
|
|
addiu $sp,$sp,-16
|
|
sw $fp,8($sp)
|
|
move $fp,$sp
|
|
.cprestore 0
|
|
|
|
# General Dynamic
|
|
lw $25,%call16(__tls_get_addr)($28)
|
|
addiu $4,$28,%tlsgd(tlsbin_gd)
|
|
jal $25
|
|
|
|
lw $25,%call16(__tls_get_addr)($28)
|
|
addiu $4,$28,%tlsgd(tlsvar_gd)
|
|
jal $25
|
|
|
|
# Local Dynamic
|
|
lw $25,%call16(__tls_get_addr)($28)
|
|
addiu $4,$28,%tlsldm(tlsbin_ld)
|
|
jal $25
|
|
|
|
move $2,$2 # Arbitrary instructions
|
|
|
|
lui $3,%dtprel_hi(tlsbin_ld)
|
|
addiu $3,$3,%dtprel_lo(tlsbin_ld)
|
|
addu $3,$3,$2
|
|
|
|
# Initial Exec
|
|
.set push
|
|
.set mips32r2
|
|
rdhwr $2, $5
|
|
.set pop
|
|
lw $3,%gottprel(tlsbin_ie)($28)
|
|
addu $3,$3,$2
|
|
|
|
lw $3,%gottprel(tlsvar_ie)($28)
|
|
addu $3,$3,$2
|
|
|
|
# Local Exec
|
|
.set push
|
|
.set mips32r2
|
|
rdhwr $2, $5
|
|
.set pop
|
|
lui $3,%tprel_hi(tlsbin_le)
|
|
addiu $3,$3,%tprel_lo(tlsbin_le)
|
|
addu $3,$3,$2
|
|
|
|
move $sp,$fp
|
|
lw $fp,8($sp)
|
|
addiu $sp,$sp,16
|
|
j $31
|
|
.end __start
|
|
|
|
.globl __tls_get_addr
|
|
__tls_get_addr:
|
|
j $31
|
|
|
|
.section .tbss,"awT",@nobits
|
|
.align 2
|
|
.global tlsbin_gd
|
|
.type tlsbin_gd,@object
|
|
.size tlsbin_gd,4
|
|
tlsbin_gd:
|
|
.space 4
|
|
.global tlsbin_ie
|
|
.type tlsbin_ie,@object
|
|
.size tlsbin_ie,4
|
|
tlsbin_ie:
|
|
.space 4
|
|
|
|
.section .tdata,"awT"
|
|
.align 2
|
|
.global tlsbin_ld
|
|
.hidden tlsbin_ld
|
|
.type tlsbin_ld,@object
|
|
.size tlsbin_ld,4
|
|
tlsbin_ld:
|
|
.word 1
|
|
.global tlsbin_le
|
|
.hidden tlsbin_le
|
|
.type tlsbin_le,@object
|
|
.size tlsbin_le,4
|
|
tlsbin_le:
|
|
.word 1
|