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, -160, %sp
26	.hidden	_GLOBAL_OFFSET_TABLE_
27	sethi	%hh(_GLOBAL_OFFSET_TABLE_), %l1
28	sethi	%lm(_GLOBAL_OFFSET_TABLE_), %l2
29	or	%l1, %hm(_GLOBAL_OFFSET_TABLE_), %l1
30	or	%l2, %lo(_GLOBAL_OFFSET_TABLE_), %l2
31	sllx	%l1, 32, %l1
32	add	%l1, %l2, %l4
33	nop;nop;nop;nop
34
35	/* IE against global var  */
36	sethi	%tie_hi22(sG6), %o3
37	add	%o3, %tie_lo10(sG6), %o3
38	ldx	[%l4 + %o3], %o2, %tie_ldx(sG6)
39	add	%g7, %o2, %o4, %tie_add(sG6)
40	nop;nop;nop;nop
41
42	/* IE -> LE against global var defined in exec  */
43	sethi	%tie_hi22(bg6), %o3
44	add	%o3, %tie_lo10(bg6), %o5
45	ldx	[%l4 + %o5], %o2, %tie_ldx(bg6)
46	add	%g7, %o2, %o4, %tie_add(bg6)
47	nop;nop;nop;nop
48
49	/* IE -> LE against local var  */
50	sethi	%tie_hi22(bl6), %o3
51	add	%o3, %tie_lo10(bl6), %o5
52	ldx	[%l4 + %o5], %l2, %tie_ldx(bl6)
53	add	%g7, %l2, %l2, %tie_add(bl6)
54	nop;nop;nop;nop
55
56	/* direct %g7 access IE -> LE against local var  */
57	sethi	%tie_hi22(bl8), %o3
58	add	%o3, %tie_lo10(bl8), %o5
59	ldx	[%l4 + %o5], %l2, %tie_ldx(bl8)
60	ldsw [%g7 + %l2], %l2, %tie_add(bl8)
61	nop;nop;nop;nop
62
63	/* IE -> LE against hidden but not local var  */
64	sethi	%tie_hi22(sh6), %o3
65	add	%o3, %tie_lo10(sh6), %o5
66	ldx	[%l4 + %o5], %l2, %tie_ldx(sh6)
67	add	%g7, %l2, %l2, %tie_add(sh6)
68	nop;nop;nop;nop
69
70	/* direct %g7 access IE -> LE against hidden but not local var  */
71	sethi	%tie_hi22(bl8), %o3
72	add	%o3, %tie_lo10(bl8), %o5
73	ldx	[%l4 + %o5], %l2, %tie_ldx(bl8)
74	stb	%l1, [%g7 + %l2], %tie_add(bl8)
75	nop;nop;nop;nop
76
77	/* LE, global var defined in exec  */
78	sethi	%tle_hix22(sg2), %l1
79	nop
80	xor	%l1, %tle_lox10(sg2), %l2
81	nop
82	add	%g7, %l2, %l3
83	nop;nop;nop;nop
84
85	/* LE, local var  */
86	sethi	%tle_hix22(bl2+2), %o0
87	xor	%o0, %tle_lox10(bl2+2), %o0
88	add	%g7, %o0, %o0
89	nop;nop;nop;nop
90
91	/* LE, hidden var defined in exec */
92	sethi	%tle_hix22(sh2+1), %l1
93	xor	%l1, %tle_lox10(sh2+1), %o5
94	add	%g7, %o5, %o1
95	nop;nop;nop;nop
96
97	/* Direct %g7 access  */
98
99	/* LE, global var defined in exec  */
100	sethi	%tle_hix22(sg3), %l1
101	xor	%l1, %tle_lox10(sg3), %o5
102	ldx	[%g7 + %o5], %o1
103	nop;nop;nop;nop
104
105	/* LE, local var  */
106	sethi	%tle_hix22(bl3 + 3), %o0
107	xor	%o0, %tle_lox10(bl3 + 3), %o0
108	stb	%o1, [%g7 + %o0]
109	nop;nop;nop;nop
110
111	/* LE, hidden var defined in exec  */
112	sethi	%tle_hix22(sh3 + 3), %o2
113	xor	%o2, %tle_lox10(sh3 + 3), %o4
114	ldstub	[%g7 + %o4], %o5
115	nop;nop;nop;nop
116
117	ret
118	restore
119