summaryrefslogtreecommitdiff
path: root/boehm-gc/powerpc_darwin_mach_dep.s
diff options
context:
space:
mode:
authorMike Stump <mrs@apple.com>2005-03-24 00:48:39 +0000
committerMike Stump <mrs@gcc.gnu.org>2005-03-24 00:48:39 +0000
commit97e095fdc7191eea3d9bbf098c5feccc9446dc67 (patch)
treec469c5364048c3c9e886851e23f76b60237309ff /boehm-gc/powerpc_darwin_mach_dep.s
parent1488177afef2bf1a40d9a5c041465d3a603402c9 (diff)
downloadgcc-97e095fdc7191eea3d9bbf098c5feccc9446dc67.tar.gz
darwin_stop_world.c: Update for -m64 multilib.
* darwin_stop_world.c: Update for -m64 multilib. * include/private/gcconfig.h: Likewise. * powerpc_darwin_mach_dep.s: Likewise. From-SVN: r96968
Diffstat (limited to 'boehm-gc/powerpc_darwin_mach_dep.s')
-rw-r--r--boehm-gc/powerpc_darwin_mach_dep.s19
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