From 139c4f238d4577028d1e98f9931dccc27d3e2362 Mon Sep 17 00:00:00 2001
From: rtoy <rtoy>
Date: Tue, 22 Jun 2010 16:55:17 +0000
Subject: [PATCH] Make previous changes build for x87.

compiler/x86/vm.lisp:
o Change *float-register-names* to be defparameter.
o Setup float-regs and def-random-reg-tns appropriately for x87 and
  sse2.

lisp/Darwin-os.c:
lisp/Linux-os.c:
o Conditionalize previous change for FEATURE_SSE2.
---
 compiler/x86/vm.lisp | 16 ++++++++++++++--
 lisp/Darwin-os.c     |  4 +++-
 lisp/Linux-os.c      |  7 +++++--
 3 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/compiler/x86/vm.lisp b/compiler/x86/vm.lisp
index b8d185877..d5db72e90 100644
--- a/compiler/x86/vm.lisp
+++ b/compiler/x86/vm.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman or slisp-group@cs.cmu.edu.
 ;;;
 (ext:file-comment
- "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/x86/vm.lisp,v 1.16 2010/06/22 15:35:23 rtoy Exp $")
+ "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/x86/vm.lisp,v 1.17 2010/06/22 16:55:16 rtoy Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -96,7 +96,7 @@
 
 ;;; added by jrd
 (eval-when (compile load eval)
-  (defvar *float-register-names* (make-array #-sse2 8 #+sse2 16 :initial-element nil)))
+  (defparameter *float-register-names* (make-array #-sse2 8 #+sse2 16 :initial-element nil)))
 (defreg fr0 0 :float)
 (defreg fr1 1 :float)
 (defreg fr2 2 :float)
@@ -105,6 +105,8 @@
 (defreg fr5 5 :float)
 (defreg fr6 6 :float)
 (defreg fr7 7 :float)
+#+sse2
+(progn
 (defreg xmm0 8 :float)
 (defreg xmm1 9 :float)
 (defreg xmm2 10 :float)
@@ -113,6 +115,12 @@
 (defreg xmm5 13 :float)
 (defreg xmm6 14 :float)
 (defreg xmm7 15 :float)
+)
+
+#-sse2
+(defregset float-regs fr0 fr1 fr2 fr3 fr4 fr5 fr6 fr7)
+
+#+sse2
 (defregset float-regs
     fr0 fr1 fr2 fr3 fr4 fr5 fr6 fr7
     xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7)
@@ -369,6 +377,10 @@
 (def-random-reg-tns byte-reg al ah bl bh cl ch dl dh)
 
 ;; added by jrd
+#-sse2
+(def-random-reg-tns single-reg fr0 fr1 fr2 fr3 fr4 fr5 fr6 fr7)
+
+#+sse2
 (def-random-reg-tns single-reg
     fr0 fr1 fr2 fr3 fr4 fr5 fr6 fr7
     xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7)
diff --git a/lisp/Darwin-os.c b/lisp/Darwin-os.c
index 553b91919..e496fbcc0 100644
--- a/lisp/Darwin-os.c
+++ b/lisp/Darwin-os.c
@@ -14,7 +14,7 @@
  * Frobbed for OpenBSD by Pierre R. Mai, 2001.
  * Frobbed for Darwin by Pierre R. Mai, 2003.
  *
- * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/Darwin-os.c,v 1.29 2010/06/22 15:35:23 rtoy Exp $
+ * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/Darwin-os.c,v 1.30 2010/06/22 16:55:17 rtoy Rel $
  *
  */
 
@@ -285,6 +285,7 @@ os_sigcontext_fpu_reg(ucontext_t *scp, int index)
 	return (unsigned char *) &scp->uc_mcontext->__fs.__fpu_stmm6;
     case 7:
 	return (unsigned char *) &scp->uc_mcontext->__fs.__fpu_stmm7;
+#ifdef FEATURE_SSE2
     case 8:
 	return (unsigned char *) &scp->uc_mcontext->__fs.__fpu_xmm0;
     case 9:
@@ -301,6 +302,7 @@ os_sigcontext_fpu_reg(ucontext_t *scp, int index)
 	return (unsigned char *) &scp->uc_mcontext->__fs.__fpu_xmm6;
     case 15:
 	return (unsigned char *) &scp->uc_mcontext->__fs.__fpu_stmm7;
+#endif
     }
     return NULL;
 }
diff --git a/lisp/Linux-os.c b/lisp/Linux-os.c
index 9c75bf7d7..1d7deb13a 100644
--- a/lisp/Linux-os.c
+++ b/lisp/Linux-os.c
@@ -15,7 +15,7 @@
  * GENCGC support by Douglas Crosher, 1996, 1997.
  * Alpha support by Julian Dolby, 1999.
  *
- * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/Linux-os.c,v 1.49 2010/06/22 15:35:23 rtoy Exp $
+ * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/Linux-os.c,v 1.50 2010/06/22 16:55:17 rtoy Rel $
  *
  */
 
@@ -190,13 +190,16 @@ os_sigcontext_fpu_reg(ucontext_t *scp, int offset)
     if (fpregs) {
         if (offset < 8) {
             reg = (unsigned char *) &fpregs->_st[offset];
-        } else {
+        }
+#ifdef FEATURE_SSE2
+        else {
             struct _fpstate *fpstate;
             fpstate = (struct _fpstate*) scp->uc_mcontext.fpregs;
             if (fpstate->magic != 0xffff) {
                 reg = (unsigned char *) &fpstate->_xmm[offset - 8];
             }
         }
+#endif
     }
     return reg;
 }
-- 
GitLab