1	.section ".tbss"
2	.align	4
3	.globl bg1, bg2, bg3, bg4, bg5, bg6, bg7, bg8
4bg1:	.word 0
5bg2:	.word 0
6bg3:	.word 0
7bg4:	.word 0
8bg5:	.word 0
9bg6:	.word 0
10bg7:	.word 0
11bg8:	.word 0
12bl1:	.word 0
13bl2:	.word 0
14bl3:	.word 0
15bl4:	.word 0
16bl5:	.word 0
17bl6:	.word 0
18bl7:	.word 0
19bl8:	.word 0
20	.text
21	.globl	_start
22	.type	_start,#function
23	.proc	04
24_start:
25	save	%sp, -104, %sp
26	.hidden	_GLOBAL_OFFSET_TABLE_
27	sethi	%hi(_GLOBAL_OFFSET_TABLE_), %l4
28	or	%l4, %lo(_GLOBAL_OFFSET_TABLE_), %l4
29	nop;nop;nop;nop
30
31	/* IE against global var  */
32	sethi	%tie_hi22(sG6), %o3
33	add	%o3, %tie_lo10(sG6), %o3
34	ld	[%l4 + %o3], %o2, %tie_ld(sG6)
35	add	%g7, %o2, %o4, %tie_add(sG6)
36	nop;nop;nop;nop
37
38	/* IE -> LE against global var defined in exec  */
39	sethi	%tie_hi22(bg6), %o3
40	add	%o3, %tie_lo10(bg6), %o5
41	ld	[%l4 + %o5], %o2, %tie_ld(bg6)
42	add	%g7, %o2, %o4, %tie_add(bg6)
43	nop;nop;nop;nop
44
45	/* IE -> LE against local var  */
46	sethi	%tie_hi22(bl6), %o3
47	add	%o3, %tie_lo10(bl6), %o5
48	ld	[%l4 + %o5], %l2, %tie_ld(bl6)
49	add	%g7, %l2, %l2, %tie_add(bl6)
50	nop;nop;nop;nop
51
52	/* direct %g7 access IE -> LE against local var  */
53	sethi	%tie_hi22(bl8), %o3
54	add	%o3, %tie_lo10(bl8), %o5
55	ld	[%l4 + %o5], %l2, %tie_ld(bl8)
56	ld	[%g7 + %l2], %l2, %tie_add(bl8)
57	nop;nop;nop;nop
58
59	/* IE -> LE against hidden but not local var  */
60	sethi	%tie_hi22(sh6), %o3
61	add	%o3, %tie_lo10(sh6), %o5
62	ld	[%l4 + %o5], %l2, %tie_ld(sh6)
63	add	%g7, %l2, %l2, %tie_add(sh6)
64	nop;nop;nop;nop
65
66	/* direct %g7 access IE -> LE against hidden but not local var  */
67	sethi	%tie_hi22(bl8), %o3
68	add	%o3, %tie_lo10(bl8), %o5
69	ld	[%l4 + %o5], %l2, %tie_ld(bl8)
70	stb	%l1, [%g7 + %l2], %tie_add(bl8)
71	nop;nop;nop;nop
72
73	/* LE, global var defined in exec  */
74	sethi	%tle_hix22(sg2), %l1
75	nop
76	xor	%l1, %tle_lox10(sg2), %l2
77	nop
78	add	%g7, %l2, %l3
79	nop;nop;nop;nop
80
81	/* LE, local var  */
82	sethi	%tle_hix22(bl2+2), %o0
83	xor	%o0, %tle_lox10(bl2+2), %o0
84	add	%g7, %o0, %o0
85	nop;nop;nop;nop
86
87	/* LE, hidden var defined in exec */
88	sethi	%tle_hix22(sh2+1), %l1
89	xor	%l1, %tle_lox10(sh2+1), %o5
90	add	%g7, %o5, %o1
91	nop;nop;nop;nop
92
93	/* Direct %g7 access  */
94
95	/* LE, global var defined in exec  */
96	sethi	%tle_hix22(sg3), %l1
97	xor	%l1, %tle_lox10(sg3), %o5
98	ld	[%g7 + %o5], %o1
99	nop;nop;nop;nop
100
101	/* LE, local var  */
102	sethi	%tle_hix22(bl3 + 3), %o0
103	xor	%o0, %tle_lox10(bl3 + 3), %o0
104	stb	%o1, [%g7 + %o0]
105	nop;nop;nop;nop
106
107	/* LE, hidden var defined in exec  */
108	sethi	%tle_hix22(sh3 + 3), %o2
109	xor	%o2, %tle_lox10(sh3 + 3), %o4
110	ldstub	[%g7 + %o4], %o5
111	nop;nop;nop;nop
112
113	ret
114	restore
115