8 .set spaceToSave,linkageArea+params+alignment
9 .set spaceToSave8,spaceToSave+8
11 ; Mark from machine registers that are saved by C compiler
15 mflr r0 ; get return address
16 stw r0,8(r1) ; save return address
17 stwu r1,-spaceToSave(r1) ; skip over caller save area
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...
25 mr r3,r13 ; mark from r13-r31
64 lwz r0,spaceToSave8(r1) ; get return address back
65 mtlr r0 ; reset link register
66 addic r1,r1,spaceToSave ; restore stack pointer
72 .indirect_symbol _GC_push_one
74 bcl 20,31,L0$_GC_push_one
77 addis r11,r11,ha16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)
79 lwz r12,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)(r11)
81 addi r11,r11,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)
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