123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- .section ".tbss"
- .align 4
- .globl bg1, bg2, bg3, bg4, bg5, bg6, bg7, bg8
- bg1: .word 0
- bg2: .word 0
- bg3: .word 0
- bg4: .word 0
- bg5: .word 0
- bg6: .word 0
- bg7: .word 0
- bg8: .word 0
- bl1: .word 0
- bl2: .word 0
- bl3: .word 0
- bl4: .word 0
- bl5: .word 0
- bl6: .word 0
- bl7: .word 0
- bl8: .word 0
- .text
- .globl _start
- .type _start,#function
- .proc 04
- _start:
- save %sp, -104, %sp
- .hidden _GLOBAL_OFFSET_TABLE_
- sethi %hi(_GLOBAL_OFFSET_TABLE_), %l4
- or %l4, %lo(_GLOBAL_OFFSET_TABLE_), %l4
- nop;nop;nop;nop
- /* IE against global var */
- sethi %tie_hi22(sG6), %o3
- add %o3, %tie_lo10(sG6), %o3
- ld [%l4 + %o3], %o2, %tie_ld(sG6)
- add %g7, %o2, %o4, %tie_add(sG6)
- nop;nop;nop;nop
- /* IE -> LE against global var defined in exec */
- sethi %tie_hi22(bg6), %o3
- add %o3, %tie_lo10(bg6), %o5
- ld [%l4 + %o5], %o2, %tie_ld(bg6)
- add %g7, %o2, %o4, %tie_add(bg6)
- nop;nop;nop;nop
- /* IE -> LE against local var */
- sethi %tie_hi22(bl6), %o3
- add %o3, %tie_lo10(bl6), %o5
- ld [%l4 + %o5], %l2, %tie_ld(bl6)
- add %g7, %l2, %l2, %tie_add(bl6)
- nop;nop;nop;nop
- /* direct %g7 access IE -> LE against local var */
- sethi %tie_hi22(bl8), %o3
- add %o3, %tie_lo10(bl8), %o5
- ld [%l4 + %o5], %l2, %tie_ld(bl8)
- ld [%g7 + %l2], %l2, %tie_add(bl8)
- nop;nop;nop;nop
- /* IE -> LE against hidden but not local var */
- sethi %tie_hi22(sh6), %o3
- add %o3, %tie_lo10(sh6), %o5
- ld [%l4 + %o5], %l2, %tie_ld(sh6)
- add %g7, %l2, %l2, %tie_add(sh6)
- nop;nop;nop;nop
- /* direct %g7 access IE -> LE against hidden but not local var */
- sethi %tie_hi22(bl8), %o3
- add %o3, %tie_lo10(bl8), %o5
- ld [%l4 + %o5], %l2, %tie_ld(bl8)
- stb %l1, [%g7 + %l2], %tie_add(bl8)
- nop;nop;nop;nop
- /* LE, global var defined in exec */
- sethi %tle_hix22(sg2), %l1
- nop
- xor %l1, %tle_lox10(sg2), %l2
- nop
- add %g7, %l2, %l3
- nop;nop;nop;nop
- /* LE, local var */
- sethi %tle_hix22(bl2+2), %o0
- xor %o0, %tle_lox10(bl2+2), %o0
- add %g7, %o0, %o0
- nop;nop;nop;nop
- /* LE, hidden var defined in exec */
- sethi %tle_hix22(sh2+1), %l1
- xor %l1, %tle_lox10(sh2+1), %o5
- add %g7, %o5, %o1
- nop;nop;nop;nop
- /* Direct %g7 access */
- /* LE, global var defined in exec */
- sethi %tle_hix22(sg3), %l1
- xor %l1, %tle_lox10(sg3), %o5
- ld [%g7 + %o5], %o1
- nop;nop;nop;nop
- /* LE, local var */
- sethi %tle_hix22(bl3 + 3), %o0
- xor %o0, %tle_lox10(bl3 + 3), %o0
- stb %o1, [%g7 + %o0]
- nop;nop;nop;nop
- /* LE, hidden var defined in exec */
- sethi %tle_hix22(sh3 + 3), %o2
- xor %o2, %tle_lox10(sh3 + 3), %o4
- ldstub [%g7 + %o4], %o5
- nop;nop;nop;nop
- ret
- restore
|