bfd/
[binutils.git] / ld / testsuite / ld-sparc / tlssunbin64.s
blobbb62610db1ae03359d73419da15fa1a241cc6973
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, -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
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
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
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
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
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
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
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
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
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
97 /* Direct %g7 access */
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
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
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
118 restore