summaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-sparc/tlssunnopic32.s
diff options
context:
space:
mode:
Diffstat (limited to 'ld/testsuite/ld-sparc/tlssunnopic32.s')
-rw-r--r--ld/testsuite/ld-sparc/tlssunnopic32.s77
1 files changed, 77 insertions, 0 deletions
diff --git a/ld/testsuite/ld-sparc/tlssunnopic32.s b/ld/testsuite/ld-sparc/tlssunnopic32.s
new file mode 100644
index 0000000..6c0ec33
--- /dev/null
+++ b/ld/testsuite/ld-sparc/tlssunnopic32.s
@@ -0,0 +1,77 @@
+ .data
+ .align 4096
+ .section ".tbss"
+ .align 4
+bl1: .word 0
+bl2: .word 0
+bl3: .word 0
+bl4: .word 0
+bl5: .word 0
+ .text
+ .align 4096
+ .globl fn3
+ .type fn3,#function
+ .proc 04
+fn3:
+ save %sp, -104, %sp
+ .hidden _GLOBAL_OFFSET_TABLE_
+ sethi %hi(_GLOBAL_OFFSET_TABLE_), %l1
+ or %l1, %lo(_GLOBAL_OFFSET_TABLE_), %l1
+ nop;nop;nop;nop
+
+ /* IE against global var */
+ sethi %tie_hi22(sg1), %o3
+ add %o3, %tie_lo10(sg1), %o3
+ ld [%l1 + %o3], %o2, %tie_ld(sg1)
+ add %g7, %o2, %o4, %tie_add(sg1)
+ nop;nop;nop;nop
+
+ /* direct %g7 access IE against global var */
+ sethi %tie_hi22(sg2), %o0
+ add %o0, %tie_lo10(sg2), %o0
+ ld [%l1 + %o0], %o0, %tie_ld(sg2)
+ ld [%g7 + %o0], %o0, %tie_add(sg2)
+ nop;nop;nop;nop
+
+ /* IE against hidden var */
+ sethi %tie_hi22(sh1), %o0
+ add %o0, %tie_lo10(sh1), %o0
+ ld [%l1 + %o0], %o0, %tie_ld(sh1)
+ add %g7, %o0, %o0, %tie_add(sh1)
+ nop;nop;nop;nop
+
+ /* direct %g7 access IE against hidden var */
+ sethi %tie_hi22(sh2), %o5
+ add %o5, %tie_lo10(sh2), %o1
+ ld [%l1 + %o1], %o2, %tie_ld(sh2)
+ stb %o3, [%g7 + %o2], %tie_add(sh2)
+ nop;nop;nop;nop
+
+ /* IE against local var */
+ sethi %tie_hi22(bl1), %o0
+ add %o0, %tie_lo10(bl1), %o0
+ ld [%l1 + %o0], %o0, %tie_ld(bl1)
+ add %g7, %o0, %o0, %tie_add(bl1)
+ nop;nop;nop;nop
+
+ /* direct %g7 access IE against local var */
+ sethi %tie_hi22(bl2), %o5
+ add %o5, %tie_lo10(bl2), %o1
+ ld [%l1 + %o1], %o2, %tie_ld(bl2)
+ stb %o3, [%g7 + %o2], %tie_add(bl2)
+ nop;nop;nop;nop
+
+ /* LE, local var */
+ sethi %tle_hix22(bl3+1), %o2
+ xor %o2, %tle_lox10(bl3+1), %o4
+ add %g7, %o4, %o0
+ nop;nop;nop;nop
+
+ /* LE, hidden var, direct %g7 access */
+ sethi %tle_hix22(sh3), %o2
+ xor %o2, %tle_lox10(sh3), %o2
+ ld [%g7 + %o2], %o2
+ nop;nop;nop;nop
+
+ ret
+ restore