Index: libffi/src/powerpc/ffi.c
===================================================================
--- libffi.orig/src/powerpc/ffi.c
+++ libffi/src/powerpc/ffi.c
@@ -2,6 +2,7 @@
    ffi.c - Copyright (c) 1998 Geoffrey Keating
    Copyright (C) 2007, 2008 Free Software Foundation, Inc
    Copyright (C) 2008 Red Hat, Inc
+   Copyright (C) 2009 Andreas Schwab
 
    PowerPC Foreign Function Interface
 
@@ -1204,6 +1205,7 @@ ffi_closure_helper_SYSV (ffi_closure *cl
 		pst++;
 	      avalue[i] = pst;
 	      pst += 2;
+	      ng = 8;
 	    }
 	  break;
 
Index: libffi/ChangeLog.libffi
===================================================================
--- libffi.orig/ChangeLog.libffi
+++ libffi/ChangeLog.libffi
@@ -1,3 +1,10 @@
+2009-12-26  Andreas Schwab  <schwab@linux-m68k.org>
+
+	* src/powerpc/ffi.c (ffi_prep_args_SYSV): Advance intarg_count
+	when a float argument is passed in memory.
+	(ffi_closure_helper_SYSV): Mark general registers as used up when
+	a 64bit or soft-float long double argument is passed in memory.
+
 2009-12-25  Samuli Suominen  <ssuominen@gentoo.org>
 
 	* configure.ac: Undefine _AC_ARG_VAR_PRECIOUS for autoconf 2.64.
