Mercurial > emacs
comparison gc/powerpc_macosx_mach_dep.s @ 51488:5de98dce4bd1
*** empty log message ***
author | Dave Love <fx@gnu.org> |
---|---|
date | Thu, 05 Jun 2003 17:49:22 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
51487:01d68b199093 | 51488:5de98dce4bd1 |
---|---|
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 |