Upload Tizen:Base source
[external/binutils.git] / ld / testsuite / ld-sparc / tlssunbin32.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, -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
30
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
37
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
44
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
51
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
58
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
65
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
72
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
80
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
86
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
92
93         /* Direct %g7 access  */
94
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
100
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
106
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
112
113         ret
114         restore