2007-06-14 Paolo Bonzini <bonzini@gnu.org>
[binutils.git] / ld / testsuite / ld-mips-elf / tlsdyn-o32.s
blob2924221987445552ae60760a6918ad49002ca10b
1 .file 1 "tlsbin-o32.s"
2 .abicalls
3 .text
4 .align 2
5 .globl __start
6 .ent __start
7 .type __start,@function
8 __start:
9 .frame $fp,16,$31
10 .mask 0x40000000,-8
11 .fmask 0x00000000,0
12 .set noreorder
13 .cpload $25
14 .set reorder
15 addiu $sp,$sp,-16
16 sw $fp,8($sp)
17 move $fp,$sp
18 .cprestore 0
20 # General Dynamic
21 lw $25,%call16(__tls_get_addr)($28)
22 addiu $4,$28,%tlsgd(tlsbin_gd)
23 jal $25
25 lw $25,%call16(__tls_get_addr)($28)
26 addiu $4,$28,%tlsgd(tlsvar_gd)
27 jal $25
29 # Local Dynamic
30 lw $25,%call16(__tls_get_addr)($28)
31 addiu $4,$28,%tlsldm(tlsbin_ld)
32 jal $25
34 move $2,$2 # Arbitrary instructions
36 lui $3,%dtprel_hi(tlsbin_ld)
37 addiu $3,$3,%dtprel_lo(tlsbin_ld)
38 addu $3,$3,$2
40 # Initial Exec
41 .set push
42 .set mips32r2
43 rdhwr $2, $5
44 .set pop
45 lw $3,%gottprel(tlsbin_ie)($28)
46 addu $3,$3,$2
48 lw $3,%gottprel(tlsvar_ie)($28)
49 addu $3,$3,$2
51 # Local Exec
52 .set push
53 .set mips32r2
54 rdhwr $2, $5
55 .set pop
56 lui $3,%tprel_hi(tlsbin_le)
57 addiu $3,$3,%tprel_lo(tlsbin_le)
58 addu $3,$3,$2
60 move $sp,$fp
61 lw $fp,8($sp)
62 addiu $sp,$sp,16
63 j $31
64 .end __start
66 .globl __tls_get_addr
67 __tls_get_addr:
68 j $31
70 .section .tbss,"awT",@nobits
71 .align 2
72 .global tlsbin_gd
73 .type tlsbin_gd,@object
74 .size tlsbin_gd,4
75 tlsbin_gd:
76 .space 4
77 .global tlsbin_ie
78 .type tlsbin_ie,@object
79 .size tlsbin_ie,4
80 tlsbin_ie:
81 .space 4
83 .section .tdata,"awT"
84 .align 2
85 .global tlsbin_ld
86 .hidden tlsbin_ld
87 .type tlsbin_ld,@object
88 .size tlsbin_ld,4
89 tlsbin_ld:
90 .word 1
91 .global tlsbin_le
92 .hidden tlsbin_le
93 .type tlsbin_le,@object
94 .size tlsbin_le,4
95 tlsbin_le:
96 .word 1