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