From a8166c109a5ae1ebaa0204946c0f720e1acb700e Mon Sep 17 00:00:00 2001 From: Christophe Rhodes Date: Mon, 18 Aug 2003 10:46:11 +0000 Subject: [PATCH] 0.8.2.40: 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 | 7 +++++++ src/compiler/sparc/arith.lisp | 17 ++++++++--------- src/runtime/interrupt.c | 3 ++- version.lisp-expr | 2 +- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/code/cross-misc.lisp b/src/code/cross-misc.lisp index dca1fdd..0d68f25 100644 --- a/src/code/cross-misc.lisp +++ b/src/code/cross-misc.lisp @@ -144,3 +144,10 @@ (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)))) diff --git a/src/compiler/sparc/arith.lisp b/src/compiler/sparc/arith.lisp index 17af5dd..7f6faad 100644 --- a/src/compiler/sparc/arith.lisp +++ b/src/compiler/sparc/arith.lisp @@ -1203,15 +1203,14 @@ ;; 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 diff --git a/src/runtime/interrupt.c b/src/runtime/interrupt.c index 83ba373..81c8e09 100644 --- a/src/runtime/interrupt.c +++ b/src/runtime/interrupt.c @@ -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) = diff --git a/version.lisp-expr b/version.lisp-expr index 53f84cf..a8a0220 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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" -- 1.7.10.4