* contrib: Remove directory.
[binutils.git] / ld / testsuite / ld-sh / tlspic1.s
blob153709a1f6b68845b8a3ae8ec9612e813234990c
1 .section ".tdata", "awT", @progbits
2 .globl sg1, sg2
3 .globl sh1, sh2
4 .hidden sh1, sh2
5 sg1: .long 17
6 sg2: .long 18
7 sl1: .long 65
8 sl2: .long 66
9 sh1: .long 257
10 sh2: .long 258
11 .text
12 .align 1
13 .globl fn1
14 .type fn1,@function
15 fn1:
16 mov.l r12,@-r15
17 mov.l r14,@-r15
18 sts.l pr,@-r15
19 mova .L3,r0
20 mov.l .L3,r12
21 add r0,r12
22 mov r15,r14
23 nop;nop;nop;nop
25 ! GD
26 mov.l 1f,r4
27 mova 2f,r0
28 mov.l 2f,r1
29 add r0,r1
30 jsr @r1
31 add r12,r4
32 bra 3f
33 nop
34 .align 2
35 1: .long sg1@TLSGD
36 2: .long __tls_get_addr@PLT
38 nop;nop;nop;nop
40 ! GD -> IE because variable is referenced through @GOTTPOFF too
41 mov.l 1f,r4
42 mova 2f,r0
43 mov.l 2f,r1
44 add r0,r1
45 jsr @r1
46 add r12,r4
47 bra 3f
48 nop
49 .align 2
50 1: .long sg2@TLSGD
51 2: .long __tls_get_addr@PLT
53 nop;nop;nop;nop
55 ! GD against local variable
56 mov.l 1f,r4
57 mova 2f,r0
58 mov.l 2f,r1
59 add r0,r1
60 jsr @r1
61 add r12,r4
62 bra 3f
63 nop
64 .align 2
65 1: .long sl1@TLSGD
66 2: .long __tls_get_addr@PLT
68 nop;nop;nop;nop
70 ! GD -> IE against local variable referenced through @GOTTPOFF too
71 mov.l 1f,r4
72 mova 2f,r0
73 mov.l 2f,r1
74 add r0,r1
75 jsr @r1
76 add r12,r4
77 bra 3f
78 nop
79 .align 2
80 1: .long sl2@TLSGD
81 2: .long __tls_get_addr@PLT
83 nop;nop;nop;nop
85 ! GD against hidden and local variable
86 mov.l 1f,r4
87 mova 2f,r0
88 mov.l 2f,r1
89 add r0,r1
90 jsr @r1
91 add r12,r4
92 bra 3f
93 nop
94 .align 2
95 1: .long sh1@TLSGD
96 2: .long __tls_get_addr@PLT
98 nop;nop;nop;nop
100 ! GD -> IE against hidden and local variable referenced through
101 ! @GOTTPOFF too
102 mov.l 1f,r4
103 mova 2f,r0
104 mov.l 2f,r1
105 add r0,r1
106 jsr @r1
107 add r12,r4
108 bra 3f
110 .align 2
111 1: .long sh2@TLSGD
112 2: .long __tls_get_addr@PLT
114 nop;nop;nop;nop
116 ! GD against hidden but not local variable
117 mov.l 1f,r4
118 mova 2f,r0
119 mov.l 2f,r1
120 add r0,r1
121 jsr @r1
122 add r12,r4
123 bra 3f
125 .align 2
126 1: .long sH1@TLSGD
127 2: .long __tls_get_addr@PLT
129 nop;nop;nop;nop
131 ! GD -> IE against hidden but not local variable referenced through
132 ! @GOTTPOFF too
133 mov.l 1f,r4
134 mova 2f,r0
135 mov.l 2f,r1
136 add r0,r1
137 jsr @r1
138 add r12,r4
139 bra 3f
141 .align 2
142 1: .long sH2@TLSGD
143 2: .long __tls_get_addr@PLT
145 nop;nop;nop;nop
147 ! LD
148 mov.l 1f,r4
149 mova 2f,r0
150 mov.l 2f,r1
151 add r0,r1
152 jsr @r1
153 add r12,r4
154 bra 3f
156 .align 2
157 1: .long sl1@TLSLDM
158 2: .long __tls_get_addr@PLT
160 nop;nop
161 mov.l .L4,r1
162 add r0,r1
163 nop;nop
164 mov.l .L5,r2
165 add r0,r2
166 nop;nop;nop;nop
168 ! LD against hidden and local variables
169 mov.l 1f,r4
170 mova 2f,r0
171 mov.l 2f,r1
172 add r0,r1
173 jsr @r1
174 add r12,r4
175 bra 3f
177 .align 2
178 1: .long sl1@TLSLDM
179 2: .long __tls_get_addr@PLT
181 nop;nop
182 mov.l .L6,r1
183 add r0,r1
184 nop;nop
185 mov.l .L7,r2
186 add r0,r2
187 nop;nop;nop;nop
189 ! LD against hidden but not local variables
190 mov.l 1f,r4
191 mova 2f,r0
192 mov.l 2f,r1
193 add r0,r1
194 jsr @r1
195 add r12,r4
196 bra 3f
198 .align 2
199 1: .long sH1@TLSLDM
200 2: .long __tls_get_addr@PLT
202 nop;nop
203 mov.l .L8,r1
204 add r0,r1
205 nop;nop
206 mov.l .L9,r2
207 add r0,r2
208 nop;nop;nop;nop
210 ! @GOTTPOFF IE against global var
211 mov.l 1f,r0
212 stc gbr,r1
213 mov.l @(r0,r12),r0
214 bra 2f
215 add r0,r1
216 .align 2
217 1: .long sg2@GOTTPOFF
219 nop;nop;nop;nop
221 ! @GOTTPOFF IE against local var
222 mov.l 1f,r0
223 stc gbr,r1
224 mov.l @(r0,r12),r0
225 bra 2f
226 add r0,r1
227 .align 2
228 1: .long sl2@GOTTPOFF
230 nop;nop;nop;nop
232 ! @GOTTPOFF IE against hidden and local var
233 mov.l 1f,r0
234 stc gbr,r1
235 mov.l @(r0,r12),r0
236 bra 2f
237 add r0,r1
238 .align 2
239 1: .long sh2@GOTTPOFF
241 nop;nop;nop;nop
243 ! @GOTTPOFF IE against hidden but not local var
244 mov.l 1f,r0
245 stc gbr,r1
246 mov.l @(r0,r12),r0
247 bra 2f
248 add r0,r1
249 .align 2
250 1: .long sH2@GOTTPOFF
252 nop;nop;nop;nop
254 mov r14,r15
255 lds.l @r15+,pr
256 mov.l @r15+,r14
257 rts
258 mov.l @r15+,r12
260 .align 2
261 .L3: .long _GLOBAL_OFFSET_TABLE_
262 .L4: .long sl1@DTPOFF
263 .L5: .long sl1@DTPOFF + 4
264 .L6: .long sh1@DTPOFF
265 .L7: .long sh2@DTPOFF
266 .L8: .long sH1@DTPOFF
267 .L9: .long sH2@DTPOFF