]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - ld/testsuite/ld-xtensa/tlsbin.s
2008-08-20 Bob Wilson <bob.wilson@acm.org>
[thirdparty/binutils-gdb.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