Add support to GDB for the Renesas rl78 architecture.
[external/binutils.git] / ld / testsuite / ld-xtensa / tlsbin.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 -> IE because variable is not defined in executable */
38         movi    a8, sG1@tlsfunc
39         movi    a10, sG1@tlsarg
40         callx8.tls a8, sG1@tlscall
41         
42         /* GD -> IE because variable is not defined in executable where
43            the variable is referenced through IE too */
44         movi    a8, sG2@tlsfunc
45         movi    a10, sG2@tlsarg
46         callx8.tls a8, sG2@tlscall
47
48         /* GD -> LE with global variable defined in executable */
49         movi    a8, sg1@tlsfunc
50         movi    a10, sg1@tlsarg
51         callx8.tls a8, sg1@tlscall
52
53         /* GD -> LE with local variable defined in executable */
54         movi    a8, sl1@tlsfunc
55         movi    a10, sl1@tlsarg
56         callx8.tls a8, sl1@tlscall
57
58         /* GD -> LE with hidden variable defined in executable */
59         movi    a8, sh1@tlsfunc
60         movi    a10, sh1@tlsarg
61         callx8.tls a8, sh1@tlscall
62
63         /* LD -> LE */
64         movi   a8, _TLS_MODULE_BASE_@tlsfunc
65         movi   a10, _TLS_MODULE_BASE_@tlsarg
66         callx8.tls a8, _TLS_MODULE_BASE_@tlscall
67         movi   a12, 1+sl1@dtpoff
68         add    a12, a12, a10
69         movi   a13, sl2@dtpoff+2
70         add    a13, a13, a10
71         
72         /* LD -> LE against hidden variables */
73         movi   a12, sh1@dtpoff
74         add    a12, a12, a10
75         movi   a13, 3+sh2@dtpoff
76         add    a13, a13, a10
77
78         /* IE against global var */
79         rur     a2, THREADPTR
80         movi    a3, sG2@tpoff
81         add     a3, a3, a2
82
83         /* IE -> LE against global var defined in exec */
84         rur     a4, THREADPTR
85         movi    a5, sg1@tpoff
86         add     a5, a5, a4
87
88         /* IE -> LE against local var */
89         rur     a6, THREADPTR
90         movi    a7, sl1@tpoff
91         add     a7, a7, a6
92
93         /* IE -> LE against hidden var */
94         rur     a8, THREADPTR
95         movi    a9, sh1@tpoff
96         add     a9, a9, a8
97
98         retw