0.8.2.40:
authorChristophe Rhodes <csr21@cam.ac.uk>
Mon, 18 Aug 2003 10:46:11 +0000 (10:46 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Mon, 18 Aug 2003 10:46:11 +0000 (10:46 +0000)
Sparc build fix I
... cross-compiler versions of ASH-RIGHT-[UN]SIGNED, to stop the
compiler from going into an endless loop during compilation
of STRING :-)
Sparc build fix II
... we don't support sigreturn via call_into_lisp on anything
but x86 yet.

src/code/cross-misc.lisp
src/compiler/sparc/arith.lisp
src/runtime/interrupt.c
version.lisp-expr

index dca1fdd..0d68f25 100644 (file)
 (defun sb!kernel:%with-array-data (array start end)
   (assert (typep array '(simple-array * (*))))
   (values array start end 0))
+
+#!+sparc
+(progn
+  (defun sb!vm::ash-right-signed (num shift)
+    (ash num (- shift)))
+  (defun sb!vm::ash-right-unsigned (num shift)
+    (ash num (- shift))))
index 17af5dd..7f6faad 100644 (file)
 \f
 ;; Need these so constant folding works with the deftransform.
 
-(defun ash-right-signed (num shift)
-  (declare (type (signed-byte #.sb!vm:n-word-bits) num)
-          (type (integer 0 #.(1- sb!vm:n-word-bits)) shift))
-  (ash-right-signed num shift))
-
-(defun ash-right-unsigned (num shift)
-  (declare (type (unsigned-byte #.sb!vm:n-word-bits) num)
-          (type (integer 0 #.(1- sb!vm:n-word-bits)) shift))
-  (ash-right-unsigned num shift))
+;; FIXME KLUDGE ew yuk.
+#-sb-xc-host
+(progn
+  (defun ash-right-signed (num shift)
+    (ash-right-signed num shift))
+
+  (defun ash-right-unsigned (num shuft)
+    (ash-right-unsigned num shift)))
 
 ;; If we can prove that we have a right shift, just do the right shift
 ;; instead of calling the inline ASH which has to check for the
index 83ba373..81c8e09 100644 (file)
@@ -551,14 +551,15 @@ void arrange_return_to_lisp_function(os_context_t *context, lispobj function)
     build_fake_control_stack_frames(th,context);
 #endif
 
-    *os_context_pc_addr(context) = call_into_lisp;
 #ifdef LISP_FEATURE_X86
+    *os_context_pc_addr(context) = call_into_lisp;
     *os_context_register_addr(context,reg_ECX) = 0; 
     *os_context_register_addr(context,reg_EBP) = sp-2;
     *os_context_register_addr(context,reg_ESP) = sp-14;
 #else
     /* this much of the calling convention is common to all
        non-x86 ports */
+    *os_context_pc_addr(context) = code;
     *os_context_register_addr(context,reg_NARGS) = 0; 
     *os_context_register_addr(context,reg_LIP) = code;
     *os_context_register_addr(context,reg_CFP) = 
index 53f84cf..a8a0220 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.8.2.39"
+"0.8.2.40"