diff options
author | mrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-03-24 00:48:39 +0000 |
---|---|---|
committer | mrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-03-24 00:48:39 +0000 |
commit | acccd380933dd5679854ee5bfce3014d202991d4 (patch) | |
tree | c469c5364048c3c9e886851e23f76b60237309ff /boehm-gc/powerpc_darwin_mach_dep.s | |
parent | 7abd83674208515baaffe6dead5c9d3136d23912 (diff) | |
download | gcc-acccd380933dd5679854ee5bfce3014d202991d4.tar.gz |
* darwin_stop_world.c: Update for -m64 multilib.
* include/private/gcconfig.h: Likewise.
* powerpc_darwin_mach_dep.s: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@96968 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'boehm-gc/powerpc_darwin_mach_dep.s')
-rw-r--r-- | boehm-gc/powerpc_darwin_mach_dep.s | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/boehm-gc/powerpc_darwin_mach_dep.s b/boehm-gc/powerpc_darwin_mach_dep.s index 83f06cffca5..694005f416d 100644 --- a/boehm-gc/powerpc_darwin_mach_dep.s +++ b/boehm-gc/powerpc_darwin_mach_dep.s @@ -1,10 +1,21 @@ +#if defined(__ppc64__) +#define MODE_CHOICE(x, y) y +#else +#define MODE_CHOICE(x, y) x +#endif + +#define lgu MODE_CHOICE(lwzu, ldu) + +#define g_long MODE_CHOICE(long, quad) /* usage is ".g_long" */ + +#define LOG2_GPR_BYTES MODE_CHOICE(2,3) /* log2(GPR_BYTES) */ ; GC_push_regs function. Under some optimization levels GCC will clobber ; some of the non-volatile registers before we get a chance to save them ; therefore, this can't be inline asm. .text - .align 2 + .align LOG2_GPR_BYTES .globl _GC_push_regs _GC_push_regs: @@ -65,7 +76,7 @@ _GC_push_regs: .data .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 - .align 2 + .align LOG2_GPR_BYTES L_GC_push_one$stub: .indirect_symbol _GC_push_one mflr r0 @@ -74,11 +85,11 @@ L0$_GC_push_one: mflr r11 addis r11,r11,ha16(L_GC_push_one$lazy_ptr-L0$_GC_push_one) mtlr r0 - lwzu r12,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)(r11) + lgu r12,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)(r11) mtctr r12 bctr .data .lazy_symbol_pointer L_GC_push_one$lazy_ptr: .indirect_symbol _GC_push_one - .long dyld_stub_binding_helper + .g_long dyld_stub_binding_helper |