Index: /branches/arm/compiler/ARM/arm-vinsns.lisp
===================================================================
--- /branches/arm/compiler/ARM/arm-vinsns.lisp	(revision 13981)
+++ /branches/arm/compiler/ARM/arm-vinsns.lisp	(revision 13982)
@@ -687,7 +687,9 @@
       (index :s16const))
      ((low (:u32 #.arm::imm0))
-      (high (:u32 #.arm::imm1))))
+      (high (:u32 #.arm::imm1))
+      (addr (:u32 #.arm::imm2))))       ; addr should be :address
+  (add addr src (:$ index))
   (fmrrd low high src)
-  (strd low (:@ src (:$ index))))
+  (strd low (:@ addr (:$ 0))))
 
 (define-arm-vinsn (mem-set-double-float :predicatable)
@@ -695,9 +697,11 @@
      ((val :double-float)
       (src :address)
-      (index :s32))                     ; imm2, I presume
+      (index :s32))                     
      ((low (:u32 #.arm::imm0))
-      (high (:u32 #.arm::imm1))))
+      (high (:u32 #.arm::imm1))
+      (addr (:u32 #.arm::imm2))))       ; addr should be :address
+  (add addr src index)
   (fmrrd low high src)
-  (strd low (:@ src index)))
+  (strd low (:@ addr (:$ 0))))
 
 (define-arm-vinsn (mem-ref-c-single-float :predicatable)
