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