summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony Green <green@moxielogic.com>2013-02-08 13:56:37 -0500
committerAnthony Green <green@moxielogic.com>2013-02-08 13:56:37 -0500
commit8bd15d139a58a6e46dc90a1cb2d89f59f32f06c7 (patch)
treec0ce3e62cb83277d79819bbf919b0dc54f05abdc
parent7aab825cf198be85490d3cd80e778d415d85ad9b (diff)
downloadlibffi-8bd15d139a58a6e46dc90a1cb2d89f59f32f06c7.tar.gz
Fix many.c testcase for ppc
-rw-r--r--ChangeLog5
-rw-r--r--src/powerpc/ffi.c6
2 files changed, 11 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 523d049..fd6f477 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2012-04-02 Peter Bergner <bergner@vnet.ibm.com>
+
+ * src/powerpc/ffi.c (ffi_prep_args_SYSV): Account for FP args pushed
+ on the stack.
+
2013-02-08 Anthony Green <green@moxielogic.com>
* Makefile.am (EXTRA_DIST): Add missing files.
diff --git a/src/powerpc/ffi.c b/src/powerpc/ffi.c
index 257f02f..add43e0 100644
--- a/src/powerpc/ffi.c
+++ b/src/powerpc/ffi.c
@@ -367,6 +367,12 @@ ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack)
/* Check that we didn't overrun the stack... */
FFI_ASSERT (copy_space.c >= next_arg.c);
FFI_ASSERT (gpr_base.u <= stacktop.u - ASM_NEEDS_REGISTERS);
+ /* The assert below is testing that the number of integer arguments agrees
+ with the number found in ffi_prep_cif_machdep(). However, intarg_count
+ is incremeneted whenever we place an FP arg on the stack, so account for
+ that before our assert test. */
+ if (fparg_count > NUM_FPR_ARG_REGISTERS)
+ intarg_count -= fparg_count - NUM_FPR_ARG_REGISTERS;
#ifndef __NO_FPRS__
FFI_ASSERT (fpr_base.u
<= stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS);