OSDN Git Service

Another newlib fix
[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 .picsymbol_stub
68 L_GC_push_one$stub:
69         .indirect_symbol _GC_push_one
70         mflr r0
71         bcl 20,31,L0$_GC_push_one
72 L0$_GC_push_one:
73         mflr r11
74         addis r11,r11,ha16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)
75         mtlr r0
76         lwz r12,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)(r11)
77         mtctr r12
78         addi r11,r11,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)
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