Index: gcc-4.2.4/gcc/config/arm/cirrus.md
===================================================================
--- gcc-4.2.4.orig/gcc/config/arm/cirrus.md	2013-07-13 19:18:10.000000000 +0200
+++ gcc-4.2.4/gcc/config/arm/cirrus.md	2013-07-13 19:26:50.000000000 +0200
@@ -257,15 +257,16 @@
    (set_attr "cirrus" "normal")]
 )
 
-(define_insn "ashldi3_cirrus"
-  [(set (match_operand:DI            0 "cirrus_fp_register" "=v")
-	(ashift:DI (match_operand:DI 1 "cirrus_fp_register"  "v")
-		   (match_operand:SI 2 "register_operand"    "r")))]
-  "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_MAVERICK && TARGET_CIRRUS_DI"
-  "cfrshl64%?\\t%V1, %V0, %s2"
-  [(set_attr "type" "farith")
-   (set_attr "cirrus" "normal")]
-)
+; Disabled because cfrshl64 only shofts by -32 to +31 places
+;(define_insn "ashldi3_cirrus"
+;  [(set (match_operand:DI            0 "cirrus_fp_register" "=v")
+;	(ashift:DI (match_operand:DI 1 "cirrus_fp_register"  "v")
+;		   (match_operand:SI 2 "register_operand"    "r")))]
+;  "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_MAVERICK && TARGET_CIRRUS_DI"
+;  "cfrshl64%?\\t%V1, %V0, %s2"
+;  [(set_attr "type" "farith")
+;   (set_attr "cirrus" "normal")]
+;)
 
 (define_insn "cirrus_ashldi_const"
   [(set (match_operand:DI            0 "cirrus_fp_register" "=v")
Index: gcc-4.2.4/gcc/config/arm/arm.md
===================================================================
--- gcc-4.2.4.orig/gcc/config/arm/arm.md	2013-07-07 11:17:41.000000000 +0200
+++ gcc-4.2.4/gcc/config/arm/arm.md	2013-07-13 19:28:14.000000000 +0200
@@ -2659,8 +2659,7 @@
            values to iwmmxt regs and back.  */
         FAIL;
     }
-  else if (!TARGET_REALLY_IWMMXT
-	   && !(TARGET_HARD_FLOAT && TARGET_MAVERICK && TARGET_CIRRUS_DI))
+  else if (!TARGET_REALLY_IWMMXT)
     FAIL;
   "
 )
