[Openmcl-cvs-notifications] r14478 - in /trunk/source: level-0/ARM/arm-def.lisp lib/ffi-linuxarm.lisp

gb at clozure.com gb at clozure.com
Thu Dec 9 15:33:01 CST 2010


Author: gb
Date: Thu Dec  9 15:33:01 2010
New Revision: 14478

Log:
More ARM FFI fixes: fix handling of (single-)FLOAT args/results
in DEFCALLBACK, fix handling of 64-bit integer results in #'%FF-CALL.

Modified:
    trunk/source/level-0/ARM/arm-def.lisp
    trunk/source/lib/ffi-linuxarm.lisp

Modified: trunk/source/level-0/ARM/arm-def.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/level-0/ARM/arm-def.lisp (original)
+++ trunk/source/level-0/ARM/arm-def.lisp Thu Dec  9 15:33:01 2010
@@ -406,8 +406,8 @@
                (:signed-halfword (%get-signed-word result 0))
                (:unsigned-fullword (%get-unsigned-long result 0))
                (:signed-fullword (%get-signed-long result 0))
-               (:unsigned-doubleword (%get-natural result 0))
-               (:signed-doubleword (%get-signed-natural result 0))
+               (:unsigned-doubleword (%%get-unsigned-longlong result 0))
+               (:signed-doubleword (%%get-signed-longlong result 0))
                (:single-float (%get-single-float result 0))
                (:double-float (%get-double-float result 0))))))))))
 =


Modified: trunk/source/lib/ffi-linuxarm.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/lib/ffi-linuxarm.lisp (original)
+++ trunk/source/lib/ffi-linuxarm.lisp Thu Dec  9 15:33:01 2010
@@ -119,7 +119,7 @@
                         `(,(cond
                             ((typep argtype 'foreign-single-float-type)
                              (setq nextoffset (+ offset 4))
-                             '%get-single-float-from-double-ptr)
+                             '%get-single-float)
                             ((typep argtype 'foreign-double-float-type)
                              (when (logtest offset 4)
                                (incf offset 4))
@@ -166,6 +166,7 @@
                   (when name (lets (list name access-form)))
                   (setq offset nextoffset))))))))
 =

+
 (defun arm-linux::generate-callback-return-value (stack-ptr fp-args-ptr re=
sult return-type struct-return-arg)
   (declare (ignore fp-args-ptr))
   (unless (eq return-type *void-foreign-type*)
@@ -181,7 +182,8 @@
                 (:address '%get-ptr)
                 (:signed-doubleword '%%get-signed-longlong)
                 (:unsigned-doubleword '%%get-unsigned-longlong)
-                ((:double-float :single-float) '%get-double-float)
+                (:double-float '%get-double-float)
+                (:single-float '%get-single-float)
                 (t '%get-long)) ,stack-ptr ,offset) ,result))))
       =

                  =




More information about the Openmcl-cvs-notifications mailing list