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