Home | History | Annotate | Download | only in ld-sparc
      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
    119