diff --git a/libffi/ChangeLog b/libffi/ChangeLog
index f9319335b740d7af3bbfa0998c456fa06805a056..a2730d4b30c157e49eaef3a477563e706342a69e 100644
--- a/libffi/ChangeLog
+++ b/libffi/ChangeLog
@@ -1,3 +1,8 @@
+2006-05-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+	* pa/ffi.c (ffi_prep_args_pa32): Load floating point arguments from
+	stack slot.
+
 2006-04-22  Andreas Tobler  <a.tobler@schweiz.ch>
 
 	* README: Remove notice about 'Crazy Comments'.
diff --git a/libffi/src/pa/ffi.c b/libffi/src/pa/ffi.c
index 92cc7f29a1fbe3e9be921b26abfd2312694c7c8f..56f85dbdbe07a4d1b628b8088850854fe75c368c 100644
--- a/libffi/src/pa/ffi.c
+++ b/libffi/src/pa/ffi.c
@@ -194,10 +194,10 @@ void ffi_prep_args_pa32(UINT32 *stack, extended_cif *ecif, unsigned bytes)
 	  switch (slot - FIRST_ARG_SLOT)
 	    {
 	    /* First 4 args go in fr4L - fr7L.  */
-	    case 0: fldw(*p_argv, fr4); break;
-	    case 1: fldw(*p_argv, fr5); break;
-	    case 2: fldw(*p_argv, fr6); break;
-	    case 3: fldw(*p_argv, fr7); break;
+	    case 0: fldw(stack - slot, fr4); break;
+	    case 1: fldw(stack - slot, fr5); break;
+	    case 2: fldw(stack - slot, fr6); break;
+	    case 3: fldw(stack - slot, fr7); break;
 	    }
 	  break;
 
@@ -209,8 +209,8 @@ void ffi_prep_args_pa32(UINT32 *stack, extended_cif *ecif, unsigned bytes)
 	  switch (slot - FIRST_ARG_SLOT)
 	    {
 	      /* First 2 args go in fr5, fr7.  */
-	      case 1: fldd(*p_argv, fr5); break;
-	      case 3: fldd(*p_argv, fr7); break;
+	      case 1: fldd(stack - slot, fr5); break;
+	      case 3: fldd(stack - slot, fr7); break;
 	    }
 	  break;