Skip to content
Snippets Groups Projects
Commit 5b219998 authored by wlott's avatar wlott
Browse files

hanged re new assemfile: All temps have explicit offsets and scs.

parent 1c245544
No related branches found
No related tags found
No related merge requests found
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
;;; Scott Fahlman (FAHLMAN@CMUC). ;;; Scott Fahlman (FAHLMAN@CMUC).
;;; ********************************************************************** ;;; **********************************************************************
;;; ;;;
;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/mips/assem-rtns.lisp,v 1.9 1990/05/19 09:48:08 wlott Exp $ ;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/mips/assem-rtns.lisp,v 1.10 1990/05/23 06:15:35 wlott Exp $
;;; ;;;
;;; ;;;
(in-package "C") (in-package "C")
...@@ -20,17 +20,16 @@ ...@@ -20,17 +20,16 @@
;;; function, because it magically gets called in place of a function when ;;; function, because it magically gets called in place of a function when
;;; there is no real function to call. ;;; there is no real function to call.
(define-assembly-routine (undefined-function (:arg cname :sc any-reg (eval-when (eval)
:offset cname-offset)
(:temp lexenv :sc any-reg (define-assembly-routine (undefined-function
:offset lexenv-offset) ()
(:temp function :sc any-reg (:temp cname any-reg cname-offset)
:offset code-offset) (:temp lexenv any-reg lexenv-offset)
(:temp nargs :sc any-reg (:temp function any-reg code-offset)
:offset nargs-offset) (:temp nargs any-reg nargs-offset)
(:temp lip :sc interior-reg) (:temp lip interior-reg lip-offset)
(:temp temp (:temp temp non-descriptor-reg nl0-offset))
:sc non-descriptor-reg))
;; Allocate function header. ;; Allocate function header.
(align vm:lowtag-bits) (align vm:lowtag-bits)
(inst word vm:function-header-type) (inst word vm:function-header-type)
...@@ -48,18 +47,22 @@ ...@@ -48,18 +47,22 @@
(loadw function lexenv vm:closure-function-slot vm:function-pointer-type) (loadw function lexenv vm:closure-function-slot vm:function-pointer-type)
(lisp-jump function lip)) (lisp-jump function lip))
); eval-when (eval)
;;;; Non-local exit noise. ;;;; Non-local exit noise.
(define-assembly-routine (unwind (:arg block) (define-assembly-routine (unwind
(:arg start :sc any-reg :offset args-offset) ()
(:arg count :sc any-reg :offset nargs-offset) (:arg block any-reg a0-offset)
(:temp lip :sc interior-reg :type interior) (:arg start any-reg args-offset)
(:temp lra :sc descriptor-reg) (:arg count any-reg nargs-offset)
(:temp cur-uwp :sc any-reg :type fixnum) (:temp lip interior-reg lip-offset)
(:temp next-uwp :sc any-reg :type fixnum) (:temp lra descriptor-reg lra-offset)
(:temp target-uwp :sc any-reg :type fixnum)) (:temp cur-uwp any-reg nl0-offset)
(:temp next-uwp any-reg nl1-offset)
(:temp target-uwp any-reg nl2-offset))
(declare (ignore start count)) (declare (ignore start count))
(let ((error (generate-error-code di:invalid-unwind-error))) (let ((error (generate-error-code di:invalid-unwind-error)))
...@@ -87,29 +90,31 @@ ...@@ -87,29 +90,31 @@
(define-assembly-routine (throw (:arg target) (define-assembly-routine (throw
(:arg start :sc any-reg :offset args-offset) ()
(:arg count :sc any-reg :offset nargs-offset) (:arg target any-reg a0-offset)
(:temp catch :sc any-reg :offset l0-offset) (:arg start any-reg args-offset)
(:temp tag :sc descriptor-reg :offset l1-offset) (:arg count any-reg nargs-offset)
(:temp ndescr :sc non-descriptor-reg)) (:temp catch any-reg a1-offset)
(:temp tag descriptor-reg a2-offset)
(:temp ndescr non-descriptor-reg nl0-offset))
(load-symbol-value catch lisp::*current-catch-block*) (load-symbol-value catch lisp::*current-catch-block*)
loop loop
(let ((error (generate-error-code di:unseen-throw-tag-error target))) (let ((error (generate-error-code di:unseen-throw-tag-error target)))
(inst beq catch zero-tn error) (inst beq catch zero-tn error)
(inst nop)) (inst nop))
(loadw tag catch vm:catch-block-tag-slot) (loadw tag catch vm:catch-block-tag-slot)
(inst beq tag target exit) (inst beq tag target exit)
(inst nop) (inst nop)
(inst b loop) (inst b loop)
(loadw catch catch vm:catch-block-previous-catch-slot) (loadw catch catch vm:catch-block-previous-catch-slot)
exit exit
(move target catch) (move target catch)
(inst li ndescr (make-fixup 'unwind :assembly-routine)) (inst li ndescr (make-fixup 'unwind :assembly-routine))
(inst j ndescr) (inst j ndescr)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment