diff options
-rw-r--r-- | libffi/ChangeLog | 7 | ||||
-rw-r--r-- | libffi/src/powerpc/ffi.c | 6 |
2 files changed, 11 insertions, 2 deletions
diff --git a/libffi/ChangeLog b/libffi/ChangeLog index 33fe14ae332..fd61c4b80d6 100644 --- a/libffi/ChangeLog +++ b/libffi/ChangeLog @@ -1,3 +1,10 @@ +2005-08-25 Alan Modra <amodra@bigpond.net.au> + + PR target/23404 + * src/powerpc/ffi.c (ffi_prep_args_SYSV): Correct placement of stack + homed fp args. + (ffi_status ffi_prep_cif_machdep): Correct stack sizing for same. + 2005-08-11 Jakub Jelinek <jakub@redhat.com> * configure.ac (HAVE_HIDDEN_VISIBILITY_ATTRIBUTE): New test. diff --git a/libffi/src/powerpc/ffi.c b/libffi/src/powerpc/ffi.c index ed02bf38d56..cc410bc6bdc 100644 --- a/libffi/src/powerpc/ffi.c +++ b/libffi/src/powerpc/ffi.c @@ -155,7 +155,8 @@ void ffi_prep_args_SYSV(extended_cif *ecif, unsigned *const stack) if (fparg_count >= NUM_FPR_ARG_REGISTERS) { - if (intarg_count%2 != 0) + if (intarg_count >= NUM_GPR_ARG_REGISTERS + && intarg_count % 2 != 0) { intarg_count++; next_arg++; @@ -575,7 +576,8 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) /* If this FP arg is going on the stack, it must be 8-byte-aligned. */ if (fparg_count > NUM_FPR_ARG_REGISTERS - && intarg_count%2 != 0) + && intarg_count >= NUM_GPR_ARG_REGISTERS + && intarg_count % 2 != 0) intarg_count++; break; |