Commit cd98813de517ea64041637e3e78d27a001d6d3b4

Anthony Green 2009-10-05T00:25:29

From Jens Rehsack. Fix for 64-bit AIX.

diff --git a/src/powerpc/aix.S b/src/powerpc/aix.S
index 45502f7..4dacee5 100644
--- a/src/powerpc/aix.S
+++ b/src/powerpc/aix.S
@@ -96,8 +96,12 @@
 	.globl .ffi_call_AIX
 .csect ffi_call_AIX[DS]
 ffi_call_AIX:
+#if defined(_ARCH_PPC64)
+	.llong .ffi_call_AIX, TOC[tc0], 0
+#else
 	.long .ffi_call_AIX, TOC[tc0], 0
-	.csect .text[PR]
+#endif	
+		.csect .text[PR]
 .ffi_call_AIX:
 	mr      r12,r8 // We only need r12 until the call, so it doesn't have to be saved...
 	/* Save the old stack pointer as AP.  */
@@ -216,7 +220,11 @@ L(float_return_value):
 	.globl .ffi_call_DARWIN
 .csect ffi_call_DARWIN[DS]
 ffi_call_DARWIN:
+#if defined(_ARCH_PPC64)
+	.llong .ffi_call_DARWIN, TOC[tc0], 0
+#else
 	.long .ffi_call_DARWIN, TOC[tc0], 0
+#endif
 	.csect .text[PR]
 .ffi_call_DARWIN:
 	blr
diff --git a/src/powerpc/aix_closure.S b/src/powerpc/aix_closure.S
index 7bf5c65..e05c849 100644
--- a/src/powerpc/aix_closure.S
+++ b/src/powerpc/aix_closure.S
@@ -84,6 +84,7 @@
 #define L(x) x
 	.file "aix_closure.S"
 	.toc
+	.extern .ffi_closure_helper_DARWIN
 LC..60:
 	.tc L..60[TC],L..60
 	.csect .text[PR]
@@ -96,7 +97,11 @@ LC..60:
 .csect ffi_closure_ASM[DS]
 
 ffi_closure_ASM:
+#if defined(_ARCH_PPC64)
+	.llong .ffi_closure_ASM, TOC[tc0], 0
+#else	
 	.long .ffi_closure_ASM, TOC[tc0], 0
+#endif	
 	.csect .text[PR]
 .ffi_closure_ASM: