bfd/
[binutils.git] / ld / testsuite / ld-sparc / tlssunbin32.s
blob21716f36b21ca3c254b1feb42ed26c60865bed17
1 .section ".tbss"
2 .align 4
3 .globl bg1, bg2, bg3, bg4, bg5, bg6, bg7, bg8
4 bg1: .word 0
5 bg2: .word 0
6 bg3: .word 0
7 bg4: .word 0
8 bg5: .word 0
9 bg6: .word 0
10 bg7: .word 0
11 bg8: .word 0
12 bl1: .word 0
13 bl2: .word 0
14 bl3: .word 0
15 bl4: .word 0
16 bl5: .word 0
17 bl6: .word 0
18 bl7: .word 0
19 bl8: .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
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
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
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
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
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
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
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
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
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
93 /* Direct %g7 access */
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
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
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
114 restore