]>
Commit | Line | Data |
---|---|---|
6991c6c9 JS |
1 | |
2 | ; GC_push_regs function. Under some optimization levels GCC will clobber | |
3 | ; some of the non-volatile registers before we get a chance to save them | |
4 | ; therefore, this can't be inline asm. | |
5 | ||
6 | .text | |
7 | .align 2 | |
8 | .globl _GC_push_regs | |
9 | _GC_push_regs: | |
10 | ||
11 | ; Prolog | |
12 | mflr r0 | |
13 | stw r0,8(r1) | |
14 | stwu r1,-80(r1) | |
15 | ||
16 | ; Push r13-r31 | |
17 | mr r3,r13 | |
18 | bl L_GC_push_one$stub | |
19 | mr r3,r14 | |
20 | bl L_GC_push_one$stub | |
21 | mr r3,r15 | |
22 | bl L_GC_push_one$stub | |
23 | mr r3,r16 | |
24 | bl L_GC_push_one$stub | |
25 | mr r3,r17 | |
26 | bl L_GC_push_one$stub | |
27 | mr r3,r18 | |
28 | bl L_GC_push_one$stub | |
29 | mr r3,r19 | |
30 | bl L_GC_push_one$stub | |
31 | mr r3,r20 | |
32 | bl L_GC_push_one$stub | |
33 | mr r3,r21 | |
34 | bl L_GC_push_one$stub | |
35 | mr r3,r22 | |
36 | bl L_GC_push_one$stub | |
37 | mr r3,r23 | |
38 | bl L_GC_push_one$stub | |
39 | mr r3,r24 | |
40 | bl L_GC_push_one$stub | |
41 | mr r3,r25 | |
42 | bl L_GC_push_one$stub | |
43 | mr r3,r26 | |
44 | bl L_GC_push_one$stub | |
45 | mr r3,r27 | |
46 | bl L_GC_push_one$stub | |
47 | mr r3,r28 | |
48 | bl L_GC_push_one$stub | |
49 | mr r3,r29 | |
50 | bl L_GC_push_one$stub | |
51 | mr r3,r30 | |
52 | bl L_GC_push_one$stub | |
53 | mr r3,r31 | |
54 | bl L_GC_push_one$stub | |
55 | ||
56 | ; | |
57 | lwz r0,88(r1) | |
58 | addi r1,r1,80 | |
59 | mtlr r0 | |
60 | ||
61 | ; Return | |
62 | blr | |
63 | ||
64 | ; PIC stuff, generated by GCC | |
65 | ||
66 | .data | |
cbaaa7db AT |
67 | .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 |
68 | .align 2 | |
6991c6c9 JS |
69 | L_GC_push_one$stub: |
70 | .indirect_symbol _GC_push_one | |
71 | mflr r0 | |
72 | bcl 20,31,L0$_GC_push_one | |
73 | L0$_GC_push_one: | |
74 | mflr r11 | |
75 | addis r11,r11,ha16(L_GC_push_one$lazy_ptr-L0$_GC_push_one) | |
76 | mtlr r0 | |
cbaaa7db | 77 | lwzu r12,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)(r11) |
6991c6c9 | 78 | mtctr r12 |
6991c6c9 JS |
79 | bctr |
80 | .data | |
81 | .lazy_symbol_pointer | |
82 | L_GC_push_one$lazy_ptr: | |
83 | .indirect_symbol _GC_push_one | |
84 | .long dyld_stub_binding_helper |