]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - ld/testsuite/ld-sparc/tlssunpic32.s
config:
[thirdparty/binutils-gdb.git] / ld / testsuite / ld-sparc / tlssunpic32.s
CommitLineData
b9734f35
JJ
1 .data
2 .align 4096
3 .section ".tdata", #alloc, #write, #tls
4 .align 4
5 .globl sg1, sg2, sg3, sg4, sg5, sg6, sg7, sg8
6 .globl sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8
7 .hidden sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8
8sg1: .word 17
9sg2: .word 18
10sg3: .word 19
11sg4: .word 20
12sg5: .word 21
13sg6: .word 22
14sg7: .word 23
15sg8: .word 24
16sl1: .word 65
17sl2: .word 66
18sl3: .word 67
19sl4: .word 68
20sl5: .word 69
21sl6: .word 70
22sl7: .word 71
23sl8: .word 72
24sh1: .word 257
25sh2: .word 258
26sh3: .word 259
27sh4: .word 260
28sh5: .word 261
29sh6: .word 262
30sh7: .word 263
31sh8: .word 264
32
33 .text
34 .align 4096
35.LLGETPC0:
36 retl
37 add %o7, %l7, %l7
38
39 .globl fn1
40 .type fn1,#function
41 .proc 04
42fn1:
43 save %sp, -104, %sp
44 sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %l7
45 call .LLGETPC0
46 add %l7, %lo(_GLOBAL_OFFSET_TABLE_+4), %l7
47 nop;nop;nop;nop
48
49 /* GD */
50 sethi %tgd_hi22(sg1), %l1
51 nop
52 add %l1, %tgd_lo10(sg1), %l2
53 nop
54 add %l7, %l2, %o0, %tgd_add(sg1)
55 nop
56 call __tls_get_addr, %tgd_call(sg1)
57 nop
58 nop;nop;nop;nop
59
60 /* GD -> IE because variable is referenced through IE too */
61 sethi %tgd_hi22(sg2), %o0
62 add %o0, %tgd_lo10(sg2), %o1
63 add %l7, %o1, %o0, %tgd_add(sg2)
64 call __tls_get_addr, %tgd_call(sg2)
65 nop
66 nop;nop;nop;nop
67
68 /* GD against local variable */
69 sethi %tgd_hi22(sl1), %o4
70 add %o4, %tgd_lo10(sl1), %o4
71 add %l7, %o4, %o0, %tgd_add(sl1)
72 call __tls_get_addr, %tgd_call(sl1)
73 nop
74 nop;nop;nop;nop
75
76 /* GD -> IE against local variable referenced through IE too */
77 sethi %tgd_hi22(sl2), %o0
78 add %o0, %tgd_lo10(sl2), %o0
79 add %l7, %o0, %o0, %tgd_add(sl2)
80 call __tls_get_addr, %tgd_call(sl2)
81 nop
82 nop;nop;nop;nop
83
84 /* GD against hidden and local variable */
85 sethi %tgd_hi22(sh1), %o4
86 add %o4, %tgd_lo10(sh1), %o4
87 add %l7, %o4, %o0, %tgd_add(sh1)
88 call __tls_get_addr, %tgd_call(sh1)
89 nop
90 nop;nop;nop;nop
91
92 /* GD -> IE against hidden and local variable referenced through
93 IE too */
94 sethi %tgd_hi22(sh2), %o0
95 add %o0, %tgd_lo10(sh2), %o0
96 add %l7, %o0, %o0, %tgd_add(sh2)
97 call __tls_get_addr, %tgd_call(sh2)
98 nop
99 nop;nop;nop;nop
100
101 /* GD against hidden but not local variable */
102 sethi %tgd_hi22(sH1), %o4
103 add %o4, %tgd_lo10(sH1), %o4
104 add %l7, %o4, %o0, %tgd_add(sH1)
105 call __tls_get_addr, %tgd_call(sH1)
106 nop
107 nop;nop;nop;nop
108
109 /* GD -> IE against hidden but not local variable referenced through
110 IE too */
111 sethi %tgd_hi22(sH2), %o0
112 add %o0, %tgd_lo10(sH2), %o0
113 add %l7, %o0, %o0, %tgd_add(sH2)
114 call __tls_get_addr, %tgd_call(sH2)
115 nop
116 nop;nop;nop;nop
117
118 /* LD */
119 sethi %tldm_hi22(sl1), %l1
120 nop
121 add %l1, %tldm_lo10(sl1), %l2
122 nop
123 add %l7, %l2, %o0, %tldm_add(sl1)
124 nop
125 call __tls_get_addr, %tldm_call(sl1)
126 nop
127 sethi %tldo_hix22(sl1), %l3
128 nop
129 xor %l3, %tldo_lox10(sl1), %l4
130 nop
131 add %o0, %l4, %l5, %tldo_add(sl1)
132 nop
133 sethi %tldo_hix22(sl2 + 2), %l2
134 nop
135 xor %l2, %tldo_lox10(sl2 + 2), %l3
136 nop
137 lduh [%o0 + %l3], %l6, %tldo_add(sl2 + 2)
138 nop;nop;nop;nop
139
140 /* LD against hidden and local variables */
141 sethi %tldm_hi22(sh1), %o1
142 sethi %tldo_hix22(sh1), %l3
143 add %o1, %tldm_lo10(sh1), %o2
144 sethi %tldo_hix22(sh2 + 1), %l2
145 add %l7, %o2, %o0, %tldm_add(sh1)
146 xor %l3, %tldo_lox10(sh1), %l4
147 call __tls_get_addr, %tldm_call(sh1)
148 xor %l2, %tldo_lox10(sh2 + 1), %l3
149 add %o0, %l4, %l5, %tldo_add(sh1)
150 ldub [%o0 + %l3], %l6, %tldo_add(sh2 + 1)
151 nop;nop;nop;nop
152
153 /* LD against hidden but not local variables */
154 sethi %tldm_hi22(sH1), %o1
155 sethi %tldo_hix22(sH1 + 3), %l3
156 add %o1, %tldm_lo10(sH1), %o2
157 sethi %tldo_hix22(sH2), %l2
158 add %l7, %o2, %o0, %tldm_add(sH1)
159 xor %l3, %tldo_lox10(sH1 + 3), %l4
160 call __tls_get_addr, %tldm_call(sH1)
161 xor %l2, %tldo_lox10(sH2), %l3
162 add %o0, %l4, %l5, %tldo_add(sH1 + 3)
163 ld [%o0 + %l3], %l6, %tldo_add(sH2)
164 nop;nop;nop;nop
165
166 /* IE against global var */
167 sethi %tie_hi22(sg2), %l1
168 nop
169 add %l1, %tie_lo10(sg2), %l2
170 nop
171 ld [%l7 + %l2], %l2, %tie_ld(sg2)
172 nop
173 add %g7, %l2, %l2, %tie_add(sg2)
174 nop;nop;nop;nop
175
176 /* IE against local var */
177 sethi %tie_hi22(sl2), %o3
178 add %o3, %tie_lo10(sl2), %o3
179 ld [%l7 + %o3], %o2, %tie_ld(sl2)
180 add %g7, %o2, %o4, %tie_add(sl2)
181 nop;nop;nop;nop
182
183 /* IE against hidden and local var */
184 sethi %tie_hi22(sh2), %l1
185 add %l1, %tie_lo10(sh2), %l2
186 ld [%l7 + %l2], %l2, %tie_ld(sh2)
187 add %g7, %l2, %l2, %tie_add(sh2)
188 nop;nop;nop;nop
189
190 /* IE against hidden but not local var */
191 sethi %tie_hi22(sH2), %l1
192 add %l1, %tie_lo10(sH2), %l2
193 ld [%l7 + %l2], %l2, %tie_ld(sH2)
194 add %g7, %l2, %l2, %tie_add(sH2)
195 nop;nop;nop;nop
196
197 /* Direct access through %g7 */
198
199 /* IE against global var */
200 sethi %tie_hi22(sg5), %l1
201 add %l1, %tie_lo10(sg5), %l2
202 ld [%l7 + %l2], %l2, %tie_ld(sg5)
203 ld [%g7 + %l2], %l2, %tie_add(sg5)
204 nop;nop;nop;nop
205
206 /* IE against local var */
207 sethi %tie_hi22(sl5), %o3
208 add %o3, %tie_lo10(sl5), %o4
209 ld [%l7 + %o4], %o5, %tie_ld(sl5)
210 stb %l2, [%g7 + %o5], %tie_add(sl5)
211 nop;nop;nop;nop
212
213 /* IE against hidden and local var */
214 sethi %tie_hi22(sh5), %o3
215 add %o3, %tie_lo10(sh5), %o4
216 ld [%l7 + %o4], %o5, %tie_ld(sh5)
217 lduh [%g7 + %o5], %l2, %tie_add(sh5)
218 nop;nop;nop;nop
219
220 /* IE against hidden but not local var */
221 sethi %tie_hi22(sH5), %o3
222 add %o3, %tie_lo10(sH5), %o4
223 ld [%l7 + %o4], %o5, %tie_ld(sH5)
224 st %l2, [%g7 + %o5], %tie_add(sH5)
225 nop;nop;nop;nop
226
227 ret
228 restore