~ubuntu-branches/ubuntu/intrepid/ecl/intrepid

« back to all changes in this revision

Viewing changes to src/gc/powerpc_darwin_mach_dep.s

  • Committer: Bazaar Package Importer
  • Author(s): Peter Van Eynde
  • Date: 2006-06-21 09:21:21 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20060621092121-txz1f21lj0wh0f67
Tags: 0.9h-20060617-1
* New upstream version
* Updated standards version without real changes. 

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#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) */
1
12
 
2
13
; GC_push_regs function. Under some optimization levels GCC will clobber
3
14
; some of the non-volatile registers before we get a chance to save them
4
15
; therefore, this cannot be inline asm.
5
16
 
6
17
.text
7
 
        .align 2
 
18
        .align LOG2_GPR_BYTES
8
19
        .globl _GC_push_regs
9
20
_GC_push_regs:
10
21
    
65
76
 
66
77
.data
67
78
.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
68
 
        .align 2
 
79
        .align LOG2_GPR_BYTES
69
80
L_GC_push_one$stub:
70
81
        .indirect_symbol _GC_push_one
71
82
        mflr r0
74
85
        mflr r11
75
86
        addis r11,r11,ha16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)
76
87
        mtlr r0
77
 
        lwzu r12,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)(r11)
 
88
        lgu r12,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)(r11)
78
89
        mtctr r12
79
90
        bctr
80
91
.data
81
92
.lazy_symbol_pointer
82
93
L_GC_push_one$lazy_ptr:
83
94
        .indirect_symbol _GC_push_one
84
 
        .long dyld_stub_binding_helper
85
 
 
 
95
        .g_long dyld_stub_binding_helper