1	.data
2	.align	4096
3	.section ".tbss"
4	.align	4
5bl1:	.word 0
6bl2:	.word 0
7bl3:	.word 0
8bl4:	.word 0
9bl5:	.word 0
10	.text
11	.align	4096
12	.globl	fn3
13	.type	fn3,#function
14	.proc	04
15fn3:
16	save	%sp, -104, %sp
17	.hidden	_GLOBAL_OFFSET_TABLE_
18	sethi	%hi(_GLOBAL_OFFSET_TABLE_), %l1
19	or	%l1, %lo(_GLOBAL_OFFSET_TABLE_), %l1
20	nop;nop;nop;nop
21
22	/* IE against global var  */
23	sethi	%tie_hi22(sg1), %o3
24	add	%o3, %tie_lo10(sg1), %o3
25	ld	[%l1 + %o3], %o2, %tie_ld(sg1)
26	add	%g7, %o2, %o4, %tie_add(sg1)
27	nop;nop;nop;nop
28
29	/* direct %g7 access IE against global var  */
30	sethi	%tie_hi22(sg2), %o0
31	add	%o0, %tie_lo10(sg2), %o0
32	ld	[%l1 + %o0], %o0, %tie_ld(sg2)
33	ld	[%g7 + %o0], %o0, %tie_add(sg2)
34	nop;nop;nop;nop
35
36	/* IE against hidden var */
37	sethi	%tie_hi22(sh1), %o0
38	add	%o0, %tie_lo10(sh1), %o0
39	ld	[%l1 + %o0], %o0, %tie_ld(sh1)
40	add	%g7, %o0, %o0, %tie_add(sh1)
41	nop;nop;nop;nop
42
43	/* direct %g7 access IE against hidden var */
44	sethi	%tie_hi22(sh2), %o5
45	add	%o5, %tie_lo10(sh2), %o1
46	ld	[%l1 + %o1], %o2, %tie_ld(sh2)
47	stb	%o3, [%g7 + %o2], %tie_add(sh2)
48	nop;nop;nop;nop
49
50	/* IE against local var  */
51	sethi	%tie_hi22(bl1), %o0
52	add	%o0, %tie_lo10(bl1), %o0
53	ld	[%l1 + %o0], %o0, %tie_ld(bl1)
54	add	%g7, %o0, %o0, %tie_add(bl1)
55	nop;nop;nop;nop
56
57	/* direct %g7 access IE against local var  */
58	sethi	%tie_hi22(bl2), %o5
59	add	%o5, %tie_lo10(bl2), %o1
60	ld	[%l1 + %o1], %o2, %tie_ld(bl2)
61	stb	%o3, [%g7 + %o2], %tie_add(bl2)
62	nop;nop;nop;nop
63
64	/* LE, local var  */
65	sethi	%tle_hix22(bl3+1), %o2
66	xor     %o2, %tle_lox10(bl3+1), %o4
67	add	%g7, %o4, %o0
68	nop;nop;nop;nop
69
70	/* LE, hidden var, direct %g7 access  */
71	sethi	%tle_hix22(sh3), %o2
72	xor     %o2, %tle_lox10(sh3), %o2
73	ld	[%g7 + %o2], %o2
74	nop;nop;nop;nop
75
76	ret
77	restore
78