Merge remote branch 'origin/master'
[binutils/dougsmingw.git] / ld / testsuite / ld-sparc / tlssunnopic64.s
blob3d0a4d3e978764f180c137df6b83f2df6db3dfda
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
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
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
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
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
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
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
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
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
80 return %i7 + 8
81 nop