OSDN Git Service

2004-12-13 Kelley Cook <kcook@gcc.gnu.org>
[pf3gnuchains/gcc-fork.git] / boehm-gc / powerpc_darwin_mach_dep.s
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
67 .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
68         .align 2
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
77         lwzu r12,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)(r11)
78         mtctr r12
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