Skip to content
Snippets Groups Projects
Commit 3cb73f59 authored by ram's avatar ram
Browse files

Added uses of :RESERVE-LOCATIONS in the SC defintiion.

parent 9e67cfc3
No related branches found
No related tags found
No related merge requests found
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
;;; Lisp, please contact Scott Fahlman (Scott.Fahlman@CS.CMU.EDU) ;;; Lisp, please contact Scott Fahlman (Scott.Fahlman@CS.CMU.EDU)
;;; ********************************************************************** ;;; **********************************************************************
;;; ;;;
;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/vm.lisp,v 1.40 1990/12/02 12:58:45 wlott Exp $ ;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/vm.lisp,v 1.41 1991/02/04 18:44:03 ram Exp $
;;; ;;;
;;; This file contains the VM definition for the MIPS R2000 and the new ;;; This file contains the VM definition for the MIPS R2000 and the new
;;; object format. ;;; object format.
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
(defreg nl3 1) (defreg nl3 1)
(defreg nl4 2) (defreg nl4 2)
(defreg flags 3) (defreg flags 3)
(defreg nl0 4) (defreg nl0 4) ; First C argument reg.
(defreg nl1 5) (defreg nl1 5)
(defreg nl2 6) (defreg nl2 6)
(defreg nargs 7) (defreg nargs 7)
...@@ -79,6 +79,12 @@ ...@@ -79,6 +79,12 @@
(defregset register-arg-offsets (defregset register-arg-offsets
a0 a1 a2 a3 a4 a5) a0 a1 a2 a3 a4 a5)
(defregset reserve-descriptor-regs
cname lexenv)
(defregset reserve-non-descriptor-regs
nl3 nl4)
;;;; SB and SC definition: ;;;; SB and SC definition:
...@@ -170,6 +176,8 @@ ...@@ -170,6 +176,8 @@
(any-reg (any-reg
registers registers
:locations #.(append non-descriptor-regs descriptor-regs) :locations #.(append non-descriptor-regs descriptor-regs)
:reserve-locations #.(append reserve-non-descriptor-regs
reserve-descriptor-regs)
:constant-scs (negative-immediate zero immediate unsigned-immediate :constant-scs (negative-immediate zero immediate unsigned-immediate
immediate-base-character random-immediate) immediate-base-character random-immediate)
:save-p t :save-p t
...@@ -178,6 +186,7 @@ ...@@ -178,6 +186,7 @@
;; Pointer descriptor objects. Must be seen by GC. ;; Pointer descriptor objects. Must be seen by GC.
(descriptor-reg registers (descriptor-reg registers
:locations #.descriptor-regs :locations #.descriptor-regs
:reserve-locations #.reserve-descriptor-regs
:constant-scs (constant null random-immediate) :constant-scs (constant null random-immediate)
:save-p t :save-p t
:alternate-scs (control-stack)) :alternate-scs (control-stack))
...@@ -185,6 +194,7 @@ ...@@ -185,6 +194,7 @@
;; Non-Descriptor characters ;; Non-Descriptor characters
(base-character-reg registers (base-character-reg registers
:locations #.non-descriptor-regs :locations #.non-descriptor-regs
:reserve-locations #.reserve-non-descriptor-regs
:constant-scs (immediate-base-character) :constant-scs (immediate-base-character)
:save-p t :save-p t
:alternate-scs (base-character-stack)) :alternate-scs (base-character-stack))
...@@ -192,6 +202,7 @@ ...@@ -192,6 +202,7 @@
;; Non-Descriptor SAP's (arbitrary pointers into address space) ;; Non-Descriptor SAP's (arbitrary pointers into address space)
(sap-reg registers (sap-reg registers
:locations #.non-descriptor-regs :locations #.non-descriptor-regs
:reserve-locations #.reserve-non-descriptor-regs
:constant-scs (immediate-sap) :constant-scs (immediate-sap)
:save-p t :save-p t
:alternate-scs (sap-stack)) :alternate-scs (sap-stack))
...@@ -199,12 +210,14 @@ ...@@ -199,12 +210,14 @@
;; Non-Descriptor (signed or unsigned) numbers. ;; Non-Descriptor (signed or unsigned) numbers.
(signed-reg registers (signed-reg registers
:locations #.non-descriptor-regs :locations #.non-descriptor-regs
:reserve-locations #.reserve-non-descriptor-regs
:constant-scs (negative-immediate zero immediate unsigned-immediate :constant-scs (negative-immediate zero immediate unsigned-immediate
random-immediate) random-immediate)
:save-p t :save-p t
:alternate-scs (signed-stack)) :alternate-scs (signed-stack))
(unsigned-reg registers (unsigned-reg registers
:locations #.non-descriptor-regs :locations #.non-descriptor-regs
:reserve-locations #.reserve-non-descriptor-regs
:constant-scs (zero immediate unsigned-immediate random-immediate) :constant-scs (zero immediate unsigned-immediate random-immediate)
:save-p t :save-p t
:alternate-scs (unsigned-stack)) :alternate-scs (unsigned-stack))
...@@ -223,6 +236,7 @@ ...@@ -223,6 +236,7 @@
;; Non-Descriptor single-floats. ;; Non-Descriptor single-floats.
(single-reg float-registers (single-reg float-registers
:locations (0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30) :locations (0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30)
:reserve-locations (26 28 30)
:constant-scs () :constant-scs ()
:save-p t :save-p t
:alternate-scs (single-stack)) :alternate-scs (single-stack))
...@@ -230,17 +244,13 @@ ...@@ -230,17 +244,13 @@
;; Non-Descriptor double-floats. ;; Non-Descriptor double-floats.
(double-reg float-registers (double-reg float-registers
:locations (0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30) :locations (0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30)
;; Note: we don't bother with the element size, 'cause load-tn's with :reserve-locations (26 28 30)
;; an element-size other than one don't work, and nothing can be allocated ;; Note: we don't bother with the element size, 'cause nothing can be
;; in the odd fp regs anyway. ;; allocated in the odd fp regs anyway.
;; :element-size 2
:constant-scs () :constant-scs ()
:save-p t :save-p t
:alternate-scs (double-stack)) :alternate-scs (double-stack))
;; A catch or unwind block. ;; A catch or unwind block.
(catch-block control-stack :element-size vm:catch-block-size)) (catch-block control-stack :element-size vm:catch-block-size))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment