Annotation of OpenXM_contrib2/asir2000/gc/powerpc_macosx_mach_dep.s, Revision 1.1
1.1 ! noro 1:
! 2: .text
! 3:
! 4: .set linkageArea,24
! 5: .set params,4
! 6: .set alignment,4
! 7:
! 8: .set spaceToSave,linkageArea+params+alignment
! 9: .set spaceToSave8,spaceToSave+8
! 10:
! 11: ; Mark from machine registers that are saved by C compiler
! 12: .globl _GC_push_regs
! 13: _GC_push_regs:
! 14: ; PROLOG
! 15: mflr r0 ; get return address
! 16: stw r0,8(r1) ; save return address
! 17: stwu r1,-spaceToSave(r1) ; skip over caller save area
! 18: ;
! 19: mr r3,r2 ; mark from r2. Well Im not really sure
! 20: ; that this is necessary or even the right
! 21: ; thing to do - at least it doesnt harm...
! 22: ; According to Apples docs it points to
! 23: ; the direct data area, whatever that is...
! 24: bl L_GC_push_one$stub
! 25: mr r3,r13 ; mark from r13-r31
! 26: bl L_GC_push_one$stub
! 27: mr r3,r14
! 28: bl L_GC_push_one$stub
! 29: mr r3,r15
! 30: bl L_GC_push_one$stub
! 31: mr r3,r16
! 32: bl L_GC_push_one$stub
! 33: mr r3,r17
! 34: bl L_GC_push_one$stub
! 35: mr r3,r18
! 36: bl L_GC_push_one$stub
! 37: mr r3,r19
! 38: bl L_GC_push_one$stub
! 39: mr r3,r20
! 40: bl L_GC_push_one$stub
! 41: mr r3,r21
! 42: bl L_GC_push_one$stub
! 43: mr r3,r22
! 44: bl L_GC_push_one$stub
! 45: mr r3,r23
! 46: bl L_GC_push_one$stub
! 47: mr r3,r24
! 48: bl L_GC_push_one$stub
! 49: mr r3,r25
! 50: bl L_GC_push_one$stub
! 51: mr r3,r26
! 52: bl L_GC_push_one$stub
! 53: mr r3,r27
! 54: bl L_GC_push_one$stub
! 55: mr r3,r28
! 56: bl L_GC_push_one$stub
! 57: mr r3,r29
! 58: bl L_GC_push_one$stub
! 59: mr r3,r30
! 60: bl L_GC_push_one$stub
! 61: mr r3,r31
! 62: bl L_GC_push_one$stub
! 63: ; EPILOG
! 64: lwz r0,spaceToSave8(r1) ; get return address back
! 65: mtlr r0 ; reset link register
! 66: addic r1,r1,spaceToSave ; restore stack pointer
! 67: blr
! 68:
! 69: .data
! 70: .picsymbol_stub
! 71: L_GC_push_one$stub:
! 72: .indirect_symbol _GC_push_one
! 73: mflr r0
! 74: bcl 20,31,L0$_GC_push_one
! 75: L0$_GC_push_one:
! 76: mflr r11
! 77: addis r11,r11,ha16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)
! 78: mtlr r0
! 79: lwz r12,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)(r11)
! 80: mtctr r12
! 81: addi r11,r11,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)
! 82: bctr
! 83: .data
! 84: .lazy_symbol_pointer
! 85: L_GC_push_one$lazy_ptr:
! 86: .indirect_symbol _GC_push_one
! 87: .long dyld_stub_binding_helper
! 88: .non_lazy_symbol_pointer
! 89: L_GC_push_one$non_lazy_ptr:
! 90: .indirect_symbol _GC_push_one
! 91: .long 0
! 92:
! 93:
! 94:
! 95:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>