Index: /trunk/source/compiler/ARM/arm-arch.lisp
===================================================================
--- /trunk/source/compiler/ARM/arm-arch.lisp	(revision 15418)
+++ /trunk/source/compiler/ARM/arm-arch.lisp	(revision 15419)
@@ -655,5 +655,5 @@
 (defconstant stack-alloc-marker subtag-stack-alloc-marker)
 
-(defconstant max-64-bit-constant-index (ash (+ #xfff arm::misc-dfloat-offset) -3))
+(defconstant max-64-bit-constant-index 127)
 (defconstant max-32-bit-constant-index (ash (+ #xfff arm::misc-data-offset) -2))
 (defconstant max-16-bit-constant-index (ash (+ #xfff arm::misc-data-offset) -1))
Index: /trunk/source/compiler/ARM/arm2.lisp
===================================================================
--- /trunk/source/compiler/ARM/arm2.lisp	(revision 15418)
+++ /trunk/source/compiler/ARM/arm2.lisp	(revision 15419)
@@ -1306,8 +1306,8 @@
                (if (and (= (get-regspec-mode hint) hard-reg-class-fpr-mode-single)
                         (eql val 0.0f0))
-                 arm::single-float-zero
+                 (make-hard-fp-reg (hard-regspec-value arm::single-float-zero) hard-reg-class-fpr-mode-single)
                  (if (and (= (get-regspec-mode hint) hard-reg-class-fpr-mode-double)
                           (eql val 0.0d0))
-                   arm::double-float-zero))))))))
+                   (make-hard-fp-reg (hard-regspec-value arm::double-float-zero))))))))))
          
     
@@ -1541,5 +1541,8 @@
                           (eql vreg-mode hard-reg-class-fpr-mode-single))
                    (setf fp-val vreg temp-is-vreg t)))
-               (if (and index-known-fixnum (<= index-known-fixnum (arch::target-max-32-bit-constant-index arch)))
+               (if (and index-known-fixnum (<= index-known-fixnum
+                                               (if (eq type-keyword :single-float-vector)
+                                                 255
+                                                 (arch::target-max-32-bit-constant-index arch))))
                  (cond ((eq type-keyword :single-float-vector)
                         (! misc-ref-c-single-float fp-val src index-known-fixnum))
@@ -2280,5 +2283,9 @@
                        (if (and index-known-fixnum
                                 (<= index-known-fixnum
-                                    (arch::target-max-32-bit-constant-index arch)))
+                                    (if (and (eq type-keyword :single-float-vector)
+                                             (eq (hard-regspec-class unboxed-val-reg)
+                                                 hard-reg-class-fpr))
+                                      255
+                                      (arch::target-max-32-bit-constant-index arch))))
                          (if (eq type-keyword :single-float-vector)
                            (if (eq (hard-regspec-class unboxed-val-reg)
