Index: /branches/arm/compiler/ARM/arm-vinsns.lisp
===================================================================
--- /branches/arm/compiler/ARM/arm-vinsns.lisp	(revision 13816)
+++ /branches/arm/compiler/ARM/arm-vinsns.lisp	(revision 13817)
@@ -785,6 +785,6 @@
 (define-arm-vinsn extract-fulltag-fixnum (((tag :imm))
                                           ((object :lisp)))
-  (and tag object (:$ arm::fulltagmask))
-  (mov tag (:lsl tag (:$ arm::fixnumshift))))
+  (mov tag (:lsl object (:$ arm::fixnumshift)))
+  (and tag tag (:$ (ash arm::fulltagmask arm::fixnumshift))))
 
 (define-arm-vinsn extract-typecode (((code :u8))
@@ -1735,5 +1735,5 @@
            (:pred < intval #x10000))
      (mov dest (:$ (:apply logand #xff00 intval)))
-     ((:not (:pred = 0 (:apply logand #xff intval)))))
+     ((:not (:pred = 0 (:apply logand #xff intval)))
       (orr dest dest (:$ (:apply logand #xff intval)))))
     ((:not (:and (:pred >= intval 0)
@@ -1743,5 +1743,5 @@
      (:word intval)
      (:code)
-     (ldr dest :const)))
+     (ldr dest :const)))))
 
 
@@ -2276,5 +2276,5 @@
   :done)
 
-(define-arm-vinsn negate-fixnum-overflow-ool (()
+(define-arm-vinsn negate-fixnum-overflow-ool (((result (:lisp #.arm::arg_z)))
                                               ((src :imm))
                                               )
@@ -2371,5 +2371,5 @@
   ((:not (:pred = count 0))
    (mov temp (:asr src (:$ count)))
-   (bic dest src (:$ arm::fixnummask))))
+   (bic dest temp (:$ arm::fixnummask))))
 
 (define-arm-vinsn %ilsr (((dest :imm))
@@ -2468,5 +2468,5 @@
 
 
-(define-arm-vinsn fixnum-add-overflow-ool (()
+(define-arm-vinsn fixnum-add-overflow-ool (((result (:lisp #.arm::arg_z)))
                                            ((x :imm)
                                             (y :imm))
@@ -2535,5 +2535,5 @@
 
 
-(define-arm-vinsn fixnum-sub-overflow-ool (()
+(define-arm-vinsn fixnum-sub-overflow-ool (((result (:lisp #.arm::arg_z)))
                                            ((x :imm)
                                             (y :imm)))
