Index: /trunk/source/compiler/ARM/arm-vinsns.lisp
===================================================================
--- /trunk/source/compiler/ARM/arm-vinsns.lisp	(revision 14556)
+++ /trunk/source/compiler/ARM/arm-vinsns.lisp	(revision 14557)
@@ -1278,7 +1278,7 @@
 (define-arm-vinsn (fixnum->double :predicatable)
     (((dest :double-float))
-     ((src :lisp))
-     ((imm :s32)
-      (temp :single-float)))
+     ((src :lisp)
+      (temp :single-float))
+     ((imm :s32)))
   (mov imm (:asr src (:$ arm::fixnumshift)))
   (fmsr temp imm)
Index: /trunk/source/compiler/ARM/arm2.lisp
===================================================================
--- /trunk/source/compiler/ARM/arm2.lisp	(revision 14556)
+++ /trunk/source/compiler/ARM/arm2.lisp	(revision 14557)
@@ -8545,9 +8545,10 @@
 (defarm2 arm2-%fixnum-to-double %fixnum-to-double (seg vreg xfer arg)
   (with-fp-target () (dreg :double-float)
-    (let* ((r (arm2-one-untargeted-reg-form seg arg arm::arg_z)))
+    (let* ((sreg (make-wired-lreg (* (hard-regspec-value dreg) 2) :mode hard-reg-class-fpr-mode-single))
+           (r (arm2-one-untargeted-reg-form seg arg arm::arg_z)))
       (unless (or (acode-fixnum-form-p arg)
                   *arm2-reckless*)
         (! trap-unless-fixnum r))
-      (! fixnum->double dreg r)
+      (! fixnum->double dreg r sreg)
       (<- dreg)
       (^))))
