[BACK]Return to powerpc_macosx_mach_dep.s CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / gc

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>