Upload Tizen:Base source
[external/binutils.git] / ld / testsuite / ld-sparc / tlssunbin64.s
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
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