X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=boehm-gc%2Fpowerpc_macosx_mach_dep.s;h=92f06286e73edab1a276862110d5b90766754033;hb=f2c4656b63eabfa11fac30b99ae6c972dbc1a1b5;hp=fad41d1c661266d64ef3f51a67eedec9054c40e3;hpb=c2a53dc0e7a58c4ddab0354e5cf5d9cd0e7f3518;p=pf3gnuchains%2Fgcc-fork.git diff --git a/boehm-gc/powerpc_macosx_mach_dep.s b/boehm-gc/powerpc_macosx_mach_dep.s index fad41d1c661..92f06286e73 100644 --- a/boehm-gc/powerpc_macosx_mach_dep.s +++ b/boehm-gc/powerpc_macosx_mach_dep.s @@ -1,4 +1,5 @@ - .text + +.text .set linkageArea,24 .set params,4 @@ -15,52 +16,80 @@ _GC_push_regs: stw r0,8(r1) ; save return address stwu r1,-spaceToSave(r1) ; skip over caller save area ; - mr r3,r2 ; mark from r2. Well I'm not really sure + mr r3,r2 ; mark from r2. Well Im not really sure ; that this is necessary or even the right - ; thing to do - at least it doesn't harm... - ; According to Apple's docs it points to + ; thing to do - at least it doesnt harm... + ; According to Apples docs it points to ; the direct data area, whatever that is... - bl _GC_push_one + bl L_GC_push_one$stub mr r3,r13 ; mark from r13-r31 - bl _GC_push_one + bl L_GC_push_one$stub mr r3,r14 - bl _GC_push_one + bl L_GC_push_one$stub mr r3,r15 - bl _GC_push_one + bl L_GC_push_one$stub mr r3,r16 - bl _GC_push_one + bl L_GC_push_one$stub mr r3,r17 - bl _GC_push_one + bl L_GC_push_one$stub mr r3,r18 - bl _GC_push_one + bl L_GC_push_one$stub mr r3,r19 - bl _GC_push_one + bl L_GC_push_one$stub mr r3,r20 - bl _GC_push_one + bl L_GC_push_one$stub mr r3,r21 - bl _GC_push_one + bl L_GC_push_one$stub mr r3,r22 - bl _GC_push_one + bl L_GC_push_one$stub mr r3,r23 - bl _GC_push_one + bl L_GC_push_one$stub mr r3,r24 - bl _GC_push_one + bl L_GC_push_one$stub mr r3,r25 - bl _GC_push_one + bl L_GC_push_one$stub mr r3,r26 - bl _GC_push_one + bl L_GC_push_one$stub mr r3,r27 - bl _GC_push_one + bl L_GC_push_one$stub mr r3,r28 - bl _GC_push_one + bl L_GC_push_one$stub mr r3,r29 - bl _GC_push_one + bl L_GC_push_one$stub mr r3,r30 - bl _GC_push_one + bl L_GC_push_one$stub mr r3,r31 - bl _GC_push_one + bl L_GC_push_one$stub ; EPILOG lwz r0,spaceToSave8(r1) ; get return address back mtlr r0 ; reset link register addic r1,r1,spaceToSave ; restore stack pointer blr + +.data +.picsymbol_stub +L_GC_push_one$stub: + .indirect_symbol _GC_push_one + mflr r0 + bcl 20,31,L0$_GC_push_one +L0$_GC_push_one: + mflr r11 + addis r11,r11,ha16(L_GC_push_one$lazy_ptr-L0$_GC_push_one) + mtlr r0 + lwz r12,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)(r11) + mtctr r12 + addi r11,r11,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one) + bctr +.data +.lazy_symbol_pointer +L_GC_push_one$lazy_ptr: + .indirect_symbol _GC_push_one + .long dyld_stub_binding_helper +.non_lazy_symbol_pointer +L_GC_push_one$non_lazy_ptr: + .indirect_symbol _GC_push_one + .long 0 + + + +