diff --git a/compiler/mips/subprim.lisp b/compiler/mips/subprim.lisp index ab0ff7ad7100567d564a1c131da1edd56b2405d3..d73db8ec1dd1b73e95a256c0db56dfa5c4527270 100644 --- a/compiler/mips/subprim.lisp +++ b/compiler/mips/subprim.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman (FAHLMAN@CMUC). ;;; ********************************************************************** ;;; -;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/subprim.lisp,v 1.10 1990/04/26 20:27:18 wlott Exp $ +;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/subprim.lisp,v 1.11 1990/05/15 01:17:45 wlott Exp $ ;;; ;;; Linkage information for standard static functions, and random vops. ;;; @@ -99,8 +99,13 @@ (:temporary (:sc any-reg :offset lra-offset) lra) (:temporary (:sc any-reg :offset code-offset) code) (:temporary (:scs (any-reg) :type fixnum) temp) + (:temporary (:sc control-stack :offset nfp-save-offset) nfp-save) + (:vop-var vop) (:generator 0 - (let ((lra-label (gen-label))) + (let ((lra-label (gen-label)) + (cur-nfp (current-nfp-tn vop))) + (when cur-nfp + (store-stack-tn nfp-save cur-nfp)) (inst li v0 (make-fixup function :foreign)) (inst li temp (make-fixup "call_into_c" :foreign)) (inst j temp) @@ -108,6 +113,8 @@ (align vm:lowtag-bits) (emit-label lra-label) (inst lra-header-word) + (when cur-nfp + (load-stack-tn cur-nfp nfp-save)) (move result v0))))