[Openmcl-cvs-notifications] r14183 - /trunk/source/compiler/ARM/arm2.lisp
gb at clozure.com
gb at clozure.com
Fri Aug 13 05:16:50 CDT 2010
Author: gb
Date: Fri Aug 13 05:16:50 2010
New Revision: 14183
Log:
64-bit alignment in ff-call.
Modified:
trunk/source/compiler/ARM/arm2.lisp
Modified: trunk/source/compiler/ARM/arm2.lisp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/compiler/ARM/arm2.lisp (original)
+++ trunk/source/compiler/ARM/arm2.lisp Fri Aug 13 05:16:50 2010
@@ -8126,12 +8126,16 @@
(let* ((*arm2-vstack* *arm2-vstack*)
(*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))
(t (incf next-arg-word))))
@@ -8153,7 +8157,7 @@
(case spec
(: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)
(! set-double-eabi-c-arg df next-arg-word)
@@ -8168,7 +8172,7 @@
(if (eq spec :signed-doubleword)
(! 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)
(incf next-arg-word)
@@ -8469,7 +8473,7 @@
(old-stack =
(arm2-encode-stack)))
(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)))
=
More information about the Openmcl-cvs-notifications
mailing list