Index: /trunk/source/compiler/ARM/arm2.lisp
===================================================================
--- /trunk/source/compiler/ARM/arm2.lisp	(revision 14182)
+++ /trunk/source/compiler/ARM/arm2.lisp	(revision 14183)
@@ -8127,10 +8127,14 @@
          (*arm2-top-vstack-lcell* *arm2-top-vstack-lcell*)
          (*arm2-cstack* *arm2-cstack*)
-         (next-arg-word 0))
+         (next-arg-word 0)
+         (natural-64-bit-alignment
+          (case (backend-target-os *target-backend*)
+            (:darwinarm nil)
+            (t t))))
       (declare (fixnum next-arg-word))
       (dolist (argspec argspecs)
         (case argspec
           ((:double-float :unsigned-doubleword :signed-doubleword)
-           (when (oddp next-arg-word)
+           (when (and natural-64-bit-alignment (oddp next-arg-word))
              (incf next-arg-word))
            (incf next-arg-word 2))
@@ -8154,5 +8158,5 @@
             (:double-float
              (let* ((df ($ arm::d0 :class :fpr :mode :double-float)))
-               (when (oddp next-arg-word)
+               (when (and natural-64-bit-alignment (oddp next-arg-word))
                  (incf next-arg-word))
                (arm2-one-targeted-reg-form seg valform df)
@@ -8169,5 +8173,5 @@
                (! gets64)
                (! getu64))
-             (when (oddp next-arg-word)
+             (when (and natural-64-bit-alignment (oddp next-arg-word))
                (incf next-arg-word))
              (! set-eabi-c-arg ($ arm::imm0) next-arg-word)
@@ -8470,5 +8474,5 @@
   (let* ((reg (arm2-one-untargeted-reg-form seg size arm::arg_z)))
     (ecase (backend-name *target-backend*)
-      (:linuxarm (! alloc-variable-eabi-c-frame reg)))
+      ((:linuxarm :darwinarm) (! alloc-variable-eabi-c-frame reg)))
     (arm2-open-undo $undo-arm-c-frame)
     (arm2-undo-body seg vreg xfer body old-stack)))
