Index: /branches/arm/compiler/ARM/arm-vinsns.lisp
===================================================================
--- /branches/arm/compiler/ARM/arm-vinsns.lisp	(revision 13849)
+++ /branches/arm/compiler/ARM/arm-vinsns.lisp	(revision 13850)
@@ -1602,5 +1602,6 @@
   (mov header (:$ arm::subtag-value-cell))
   (orr header header (:$ (ash arm::value-cell.element-count arm::num-subtag-bits)))
-  (stmdb (:! sp) (closed header)))
+  (stmdb (:! sp) (closed header))
+  (add dest sp (:$ arm::fulltag-misc)))
 
 (define-arm-vinsn make-stack-cons (((dest :lisp))
@@ -2149,5 +2150,5 @@
                                      ())
   (bic dest src (:$ arm::subtag-mask))
-  (mov dest (:lsr dest (:$ (- arm::ncharcodebits arm::fixnumshift)))))
+  (mov dest (:lsr dest (:$ (- arm::charcode-shift arm::fixnumshift)))))
 
 (define-arm-vinsn character->code (((dest :u32))
@@ -2158,14 +2159,14 @@
 (define-arm-vinsn fixnum->char (((dest :lisp))
                                 ((src :imm))
-                                ((temp :u32)
-                                 (temp2 :u32)))
-  (mov temp2 (:$ #x7f00))
-  (mov temp (:lsr src (:$ (+ arm::fixnumshift 1))))
-  (orr temp2 temp2 (:$ #xff))
-  (cmp temp temp2)
-  (mov temp (:lsr src (:$ (+ arm::fixnumshift 11))))
+                                ((tempa :u32)
+                                 (tempb :u32)))
+  (mov tempb (:$ #x7f00))
+  (mov tempa (:lsr src (:$ (+ arm::fixnumshift 1))))
+  (orr tempb tempb (:$ #xff))
+  (cmp tempa tempb)
+  (mov tempa (:lsr src (:$ (+ arm::fixnumshift 11))))
   (beq :bad)
-  (cmp temp (:$ 27))
-  (mov dest (:lsr src (:$ (- arm::charcode-shift arm::fixnumshift))))
+  (cmp tempa (:$ 27))
+  (mov dest (:lsl src (:$ (- arm::charcode-shift arm::fixnumshift))))
   :bad
   (moveq dest (:$ arm::nil-value))
@@ -2929,5 +2930,5 @@
    (str arg_y (:@! vsp (:$ (- arm::node-size)))))
   ((:pred >= min 1)
-   (mov arg_x (:$ arm::nil-value)))
+   (mov arg_x arg_z))
   (mov arg_y (:$ arm::nil-value))
   (b :last)
