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
6sg1:	.long	17
7sg2:	.long	18
8sg3:	.long	19
9sg4:	.long	20
10sg5:	.long	21
11sg6:	.long	22
12sg7:	.long	23
13sg8:	.long	24
14sl1:	.long	65
15sl2:	.long	66
16sl3:	.long	67
17sl4:	.long	68
18sl5:	.long	69
19sl6:	.long	70
20sl7:	.long	71
21sl8:	.long	72
22sh1:	.long	157
23sh2:	.long	158
24sh3:	.long	159
25sh4:	.long	160
26sh5:	.long	161
27sh6:	.long	162
28sh7:	.long	163
29sh8:	.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
121