http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364

--- a/gcc/config/rs6000/e500.h	2010/06/22 10:23:39	161162
+++ b/gcc/config/rs6000/e500.h	2010/06/22 10:44:11	161163
@@ -46,3 +46,10 @@
 	  error ("E500 and FPRs not supported");			\
       }									\
   } while (0)
+
+/* When setting up caller-save slots (MODE == VOIDmode) ensure we
+   allocate space for DFmode.  Save gprs in the correct mode too.  */
+#define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) \
+  (TARGET_E500_DOUBLE && ((MODE) == VOIDmode || (MODE) == DFmode)	\
+   ? DFmode								\
+   : choose_hard_reg_mode ((REGNO), (NREGS), false))
