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, -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
    115