| 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, -104, %sp |
| 17 | .hidden _GLOBAL_OFFSET_TABLE_ |
| 18 | sethi %hi(_GLOBAL_OFFSET_TABLE_), %l1 |
| 19 | or %l1, %lo(_GLOBAL_OFFSET_TABLE_), %l1 |
| 20 | nop;nop;nop;nop |
| 21 | |
| 22 | /* IE against global var */ |
| 23 | sethi %tie_hi22(sg1), %o3 |
| 24 | add %o3, %tie_lo10(sg1), %o3 |
| 25 | ld [%l1 + %o3], %o2, %tie_ld(sg1) |
| 26 | add %g7, %o2, %o4, %tie_add(sg1) |
| 27 | nop;nop;nop;nop |
| 28 | |
| 29 | /* direct %g7 access IE against global var */ |
| 30 | sethi %tie_hi22(sg2), %o0 |
| 31 | add %o0, %tie_lo10(sg2), %o0 |
| 32 | ld [%l1 + %o0], %o0, %tie_ld(sg2) |
| 33 | ld [%g7 + %o0], %o0, %tie_add(sg2) |
| 34 | nop;nop;nop;nop |
| 35 | |
| 36 | /* IE against hidden var */ |
| 37 | sethi %tie_hi22(sh1), %o0 |
| 38 | add %o0, %tie_lo10(sh1), %o0 |
| 39 | ld [%l1 + %o0], %o0, %tie_ld(sh1) |
| 40 | add %g7, %o0, %o0, %tie_add(sh1) |
| 41 | nop;nop;nop;nop |
| 42 | |
| 43 | /* direct %g7 access IE against hidden var */ |
| 44 | sethi %tie_hi22(sh2), %o5 |
| 45 | add %o5, %tie_lo10(sh2), %o1 |
| 46 | ld [%l1 + %o1], %o2, %tie_ld(sh2) |
| 47 | stb %o3, [%g7 + %o2], %tie_add(sh2) |
| 48 | nop;nop;nop;nop |
| 49 | |
| 50 | /* IE against local var */ |
| 51 | sethi %tie_hi22(bl1), %o0 |
| 52 | add %o0, %tie_lo10(bl1), %o0 |
| 53 | ld [%l1 + %o0], %o0, %tie_ld(bl1) |
| 54 | add %g7, %o0, %o0, %tie_add(bl1) |
| 55 | nop;nop;nop;nop |
| 56 | |
| 57 | /* direct %g7 access IE against local var */ |
| 58 | sethi %tie_hi22(bl2), %o5 |
| 59 | add %o5, %tie_lo10(bl2), %o1 |
| 60 | ld [%l1 + %o1], %o2, %tie_ld(bl2) |
| 61 | stb %o3, [%g7 + %o2], %tie_add(bl2) |
| 62 | nop;nop;nop;nop |
| 63 | |
| 64 | /* LE, local var */ |
| 65 | sethi %tle_hix22(bl3+1), %o2 |
| 66 | xor %o2, %tle_lox10(bl3+1), %o4 |
| 67 | add %g7, %o4, %o0 |
| 68 | nop;nop;nop;nop |
| 69 | |
| 70 | /* LE, hidden var, direct %g7 access */ |
| 71 | sethi %tle_hix22(sh3), %o2 |
| 72 | xor %o2, %tle_lox10(sh3), %o2 |
| 73 | ld [%g7 + %o2], %o2 |
| 74 | nop;nop;nop;nop |
| 75 | |
| 76 | ret |
| 77 | restore |