1 .data 2 .align 4096 3 .section ".tbss" 4 .align 4 5 bl1: .word 0 6 bl2: .word 0 7 bl3: .word 0 8 bl4: .word 0 9 bl5: .word 0 10 .text 11 .align 4096 12 .globl fn3 13 .type fn3,#function 14 .proc 04 15 fn3: 16 save %sp, -160, %sp 17 .hidden _GLOBAL_OFFSET_TABLE_ 18 sethi %hh(_GLOBAL_OFFSET_TABLE_), %l1 19 sethi %lm(_GLOBAL_OFFSET_TABLE_), %l2 20 or %l1, %hm(_GLOBAL_OFFSET_TABLE_), %l1 21 or %l2, %lo(_GLOBAL_OFFSET_TABLE_), %l2 22 sllx %l1, 32, %l1 23 add %l1, %l2, %l1 24 nop;nop;nop;nop 25 26 /* IE against global var */ 27 sethi %tie_hi22(sg1), %o3 28 add %o3, %tie_lo10(sg1), %o3 29 ldx [%l1 + %o3], %o2, %tie_ldx(sg1) 30 add %g7, %o2, %o4, %tie_add(sg1) 31 nop;nop;nop;nop 32 33 /* direct %g7 access IE against global var */ 34 sethi %tie_hi22(sg2), %o0 35 add %o0, %tie_lo10(sg2), %o0 36 ldx [%l1 + %o0], %o0, %tie_ldx(sg2) 37 lduw [%g7 + %o0], %o0, %tie_add(sg2) 38 nop;nop;nop;nop 39 40 /* IE against hidden var */ 41 sethi %tie_hi22(sh1), %o0 42 add %o0, %tie_lo10(sh1), %o0 43 ldx [%l1 + %o0], %o0, %tie_ldx(sh1) 44 add %g7, %o0, %o0, %tie_add(sh1) 45 nop;nop;nop;nop 46 47 /* direct %g7 access IE against hidden var */ 48 sethi %tie_hi22(sh2), %o5 49 add %o5, %tie_lo10(sh2), %o1 50 ldx [%l1 + %o1], %o2, %tie_ldx(sh2) 51 stb %o3, [%g7 + %o2], %tie_add(sh2) 52 nop;nop;nop;nop 53 54 /* IE against local var */ 55 sethi %tie_hi22(bl1), %o0 56 add %o0, %tie_lo10(bl1), %o0 57 ldx [%l1 + %o0], %o0, %tie_ldx(bl1) 58 add %g7, %o0, %o0, %tie_add(bl1) 59 nop;nop;nop;nop 60 61 /* direct %g7 access IE against local var */ 62 sethi %tie_hi22(bl2), %o5 63 add %o5, %tie_lo10(bl2), %o1 64 ldx [%l1 + %o1], %o2, %tie_ldx(bl2) 65 stb %o3, [%g7 + %o2], %tie_add(bl2) 66 nop;nop;nop;nop 67 68 /* LE, local var */ 69 sethi %tle_hix22(bl3+1), %o2 70 xor %o2, %tle_lox10(bl3+1), %o4 71 add %g7, %o4, %o0 72 nop;nop;nop;nop 73 74 /* LE, hidden var, direct %g7 access */ 75 sethi %tle_hix22(sh3), %o2 76 xor %o2, %tle_lox10(sh3), %o2 77 ld [%g7 + %o2], %o2 78 nop;nop;nop;nop 79 80 return %i7 + 8 81 nop 82