summaryrefslogtreecommitdiff
path: root/src/powerpc
diff options
context:
space:
mode:
authorAnthony Green <green@moxielogic.com>2009-10-05 00:25:29 -0400
committerAnthony Green <green@moxielogic.com>2009-10-05 00:25:29 -0400
commitcd98813de517ea64041637e3e78d27a001d6d3b4 (patch)
tree912d21f178e54a8d483c54ec4e3de15577c92e81 /src/powerpc
parente4a91de766acc47f6c50f13cc11719a65e23ecba (diff)
downloadlibffi-cd98813de517ea64041637e3e78d27a001d6d3b4.tar.gz
From Jens Rehsack. Fix for 64-bit AIX.
Diffstat (limited to 'src/powerpc')
-rw-r--r--src/powerpc/aix.S10
-rw-r--r--src/powerpc/aix_closure.S5
2 files changed, 14 insertions, 1 deletions
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: