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