Upload Tizen:Base source
[external/binutils.git] / ld / testsuite / ld-sh / tlspic1.s
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
24
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
37 3:
38         nop;nop;nop;nop
39
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
52 3:
53         nop;nop;nop;nop
54
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
67 3:
68         nop;nop;nop;nop
69
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
82 3:
83         nop;nop;nop;nop
84
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
97 3:
98         nop;nop;nop;nop
99
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
109         nop
110         .align  2
111 1:      .long   sh2@TLSGD
112 2:      .long   __tls_get_addr@PLT
113 3:
114         nop;nop;nop;nop
115
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
124         nop
125         .align  2
126 1:      .long   sH1@TLSGD
127 2:      .long   __tls_get_addr@PLT
128 3:
129         nop;nop;nop;nop
130
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
140         nop
141         .align  2
142 1:      .long   sH2@TLSGD
143 2:      .long   __tls_get_addr@PLT
144 3:
145         nop;nop;nop;nop
146
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
155         nop
156         .align  2
157 1:      .long   sl1@TLSLDM
158 2:      .long   __tls_get_addr@PLT
159 3:
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
167
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
176         nop
177         .align  2
178 1:      .long   sl1@TLSLDM
179 2:      .long   __tls_get_addr@PLT
180 3:
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
188
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
197         nop
198         .align  2
199 1:      .long   sH1@TLSLDM
200 2:      .long   __tls_get_addr@PLT
201 3:
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
209
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
218 2:
219         nop;nop;nop;nop
220
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
229 2:
230         nop;nop;nop;nop
231
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
240 2:
241         nop;nop;nop;nop
242
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
251 2:
252         nop;nop;nop;nop
253
254         mov     r14,r15
255         lds.l   @r15+,pr
256         mov.l   @r15+,r14
257         rts     
258         mov.l   @r15+,r12
259
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