Upload Tizen:Base source
[external/binutils.git] / ld / testsuite / ld-xtensa / tlspic1.s
1         .section ".tdata", "awT", @progbits
2         .global sg1, sg2, sg3, sg4, sg5, sg6, sg7, sg8
3         .global sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8
4         .hidden sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8
5         .align  4
6 sg1:    .long   17
7 sg2:    .long   18
8 sg3:    .long   19
9 sg4:    .long   20
10 sg5:    .long   21
11 sg6:    .long   22
12 sg7:    .long   23
13 sg8:    .long   24
14 sl1:    .long   65
15 sl2:    .long   66
16 sl3:    .long   67
17 sl4:    .long   68
18 sl5:    .long   69
19 sl6:    .long   70
20 sl7:    .long   71
21 sl8:    .long   72
22 sh1:    .long   157
23 sh2:    .long   158
24 sh3:    .long   159
25 sh4:    .long   160
26 sh5:    .long   161
27 sh6:    .long   162
28 sh7:    .long   163
29 sh8:    .long   164
30
31         .text
32         .global _start
33         .type   _start, @function
34 _start:
35         entry   sp, 32
36
37         /* GD */
38         movi    a8, sg1@tlsfunc
39         movi    a10, sg1@tlsarg
40         callx8.tls a8, sg1@tlscall
41
42         /* GD -> IE because variable is referenced through IE too */
43         movi    a8, sg2@tlsfunc
44         movi    a10, sg2@tlsarg
45         callx8.tls a8, sg2@tlscall
46
47         /* GD against local variable */
48         movi    a8, sl1@tlsfunc
49         movi    a10, sl1@tlsarg
50         callx8.tls a8, sl1@tlscall
51
52         /* GD -> IE against local variable referenced through IE too */
53         movi    a8, sl2@tlsfunc
54         movi    a10, sl2@tlsarg
55         callx8.tls a8, sl2@tlscall
56
57         /* GD against hidden and local variable */
58         movi    a8, sh1@tlsfunc
59         movi    a10, sh1@tlsarg
60         callx8.tls a8, sh1@tlscall
61
62         /* GD -> IE against hidden and local variable referenced through
63            IE too */
64         movi    a8, sh2@tlsfunc
65         movi    a10, sh2@tlsarg
66         callx8.tls a8, sh2@tlscall
67
68         /* GD against hidden but not local variable */
69         movi    a8, sH1@tlsfunc
70         movi    a10, sH1@tlsarg
71         callx8.tls a8, sH1@tlscall
72
73         /* GD -> IE against hidden but not local variable referenced through
74            IE too */
75         movi    a8, sH2@tlsfunc
76         movi    a10, sH2@tlsarg
77         callx8.tls a8, sH2@tlscall
78
79         /* LD */
80         movi   a8, _TLS_MODULE_BASE_@tlsfunc
81         movi   a10, _TLS_MODULE_BASE_@tlsarg
82         callx8.tls a8, _TLS_MODULE_BASE_@tlscall
83         movi   a12, sl1@dtpoff
84         add    a12, a12, a10
85         movi   a13, 2+sl2@dtpoff
86         add    a13, a13, a10
87
88         /* LD against hidden and local variables */
89         movi   a12, sh1@dtpoff
90         add    a12, a12, a10
91         movi   a13, sh2@dtpoff+3
92         add    a13, a13, a10
93
94         /* LD against hidden but not local variables */
95         movi   a12, sH1@dtpoff
96         add    a12, a12, a10
97         movi   a13, sH2@dtpoff+1
98         add    a13, a13, a10
99
100         /* IE against global var */
101         rur     a2, THREADPTR
102         movi    a3, sg2@tpoff
103         add     a3, a3, a2
104
105         /* IE against local var  */
106         rur     a4, THREADPTR
107         movi    a5, sl2@tpoff
108         add     a5, a5, a4
109
110         /* IE against hidden and local var  */
111         rur     a6, THREADPTR
112         movi    a7, sh2@tpoff
113         add     a7, a7, a6
114
115         /* IE against hidden but not local var  */
116         rur     a8, THREADPTR
117         movi    a9, sH2@tpoff
118         add     a9, a9, a8
119
120         retw