1 .section ".tbss" 2 .align 4 3 .globl bg1, bg2, bg3, bg4, bg5, bg6, bg7, bg8 4bg1: .word 0 5bg2: .word 0 6bg3: .word 0 7bg4: .word 0 8bg5: .word 0 9bg6: .word 0 10bg7: .word 0 11bg8: .word 0 12bl1: .word 0 13bl2: .word 0 14bl3: .word 0 15bl4: .word 0 16bl5: .word 0 17bl6: .word 0 18bl7: .word 0 19bl8: .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