diff --git a/libffi/ChangeLog b/libffi/ChangeLog
index cddc10354953a5270942a927c793b162567468a1..2d875a38c73c9c7c57378d41f19dac3a55bc1ca0 100644
--- a/libffi/ChangeLog
+++ b/libffi/ChangeLog
@@ -1,3 +1,8 @@
+2009-12-03  David Edelsohn  <edelsohn@gnu.org>
+
+	* src/powerpc/ffi_darwin.c (ffi_prep_args): Increment next_arg and
+	fparg_count twice for long double.
+
 2009-12-03  David Edelsohn  <edelsohn@gnu.org>
 
 	PR libffi/42243
diff --git a/libffi/src/powerpc/ffi_darwin.c b/libffi/src/powerpc/ffi_darwin.c
index 4c3f834b3d8c7e7e3c796960711c827dfacd300c..ff480b0413f18ffdfd708b3262eed2d14ab54db7 100644
--- a/libffi/src/powerpc/ffi_darwin.c
+++ b/libffi/src/powerpc/ffi_darwin.c
@@ -167,6 +167,8 @@ void ffi_prep_args(extended_cif *ecif, unsigned long *const stack)
 	    *fpr_base++ = double_tmp;
 	  else
 	    *(double *) next_arg = double_tmp;
+	  next_arg += 2;
+	  fparg_count++;
 
 	  double_tmp = ((double *) *p_argv)[1];
 	  if (fparg_count < NUM_FPR_ARG_REGISTERS)