From 9877cd61e663bcce9d287074d9cbefb5f3c6860a Mon Sep 17 00:00:00 2001
From: wlott <wlott>
Date: Sat, 7 Jul 1990 01:00:23 +0000
Subject: [PATCH] Changed the define-move-vops for the
 move-mumble-float-arguments vops to also handle moving from descriptor-regs
 to fp-regs.  This way we can pass floats in fp-regs in local call even if it
 starts in a descriptor-reg.

Added sap-ref-{single,double} and setters for them.
---
 compiler/mips/float.lisp | 40 ++++++++++++++++++++++++++++++++++++++--
 1 file changed, 38 insertions(+), 2 deletions(-)

diff --git a/compiler/mips/float.lisp b/compiler/mips/float.lisp
index d152f5a20..d93da1657 100644
--- a/compiler/mips/float.lisp
+++ b/compiler/mips/float.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman (FAHLMAN@CMUC). 
 ;;; **********************************************************************
 ;;;
-;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/float.lisp,v 1.3 1990/07/05 09:56:03 ram Exp $
+;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/float.lisp,v 1.4 1990/07/07 01:00:23 wlott Exp $
 ;;;
 ;;;    This file contains floating point support for the MIPS.
 ;;;
@@ -122,7 +122,8 @@
 			 ,@(when double-p
 			     '((inst swc1-odd x nfp
 				     (+ offset vm:word-bytes)))))))))
-		(define-move-vop ,name :move-argument (,sc) (,sc)))))
+		(define-move-vop ,name :move-argument
+		  (,sc descriptor-reg) (,sc)))))
   (frob move-single-float-argument single-reg single-stack :single nil)
   (frob move-double-float-argument double-reg double-stack :double t))
 
@@ -331,3 +332,38 @@
   (:generator 2
     (inst mfc1 lo-bits float)
     (inst nop)))
+
+
+;;;; SAP accessors/setters
+
+(define-vop (sap-ref-single sap-ref)
+  (:translate sap-ref-single)
+  (:results (result :scs (single-reg)))
+  (:result-types single-float)
+  (:variant :single nil))
+
+(define-vop (sap-set-single sap-set)
+  (:translate %set-sap-ref-single)
+  (:args (object :scs (sap-reg) :target sap)
+	 (offset :scs (any-reg negative-immediate zero immediate))
+	 (value :scs (single-reg) :target result))
+  (:arg-types system-area-pointer positive-fixnum single-float)
+  (:results (result :scs (single-reg)))
+  (:result-types single-float)
+  (:variant :single))
+
+(define-vop (sap-ref-double sap-ref)
+  (:translate sap-ref-double)
+  (:results (result :scs (double-reg)))
+  (:result-types double-float)
+  (:variant :double nil))
+
+(define-vop (sap-set-double sap-set)
+  (:translate %set-sap-ref-double)
+  (:args (object :scs (sap-reg) :target sap)
+	 (offset :scs (any-reg negative-immediate zero immediate))
+	 (value :scs (double-reg) :target result))
+  (:arg-types system-area-pointer positive-fixnum double-float)
+  (:results (result :scs (double-reg)))
+  (:result-types double-float)
+  (:variant :double))
-- 
GitLab