OpenCores
URL https://opencores.org/ocsvn/scarts/scarts/trunk

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [boehm-gc/] [powerpc_darwin_mach_dep.s] - Blame information for rev 12

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.