Changeset 6410 for branches/x8664-call


Ignore:
Timestamp:
May 4, 2007, 4:45:48 AM (13 years ago)
Author:
gb
Message:

Add nmkunwind vinsn, which handles *interrupt-level* binding out-of-line.
Use it for unwind-protect, but not progv (which gets confused by the
extra binding, anyway.)

Location:
branches/x8664-call/ccl/compiler/PPC
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/x8664-call/ccl/compiler/PPC/PPC32/ppc32-vinsns.lisp

    r5688 r6410  
    38793879
    38803880(define-ppc32-subprim-call-vinsn (mkunwind) .SPmkunwind)
     3881(define-ppc32-subprim-call-vinsn (nmkunwind) .SPnmkunwind)
     3882
    38813883
    38823884(define-ppc32-subprim-call-vinsn (progvsave) .SPprogvsave)
  • branches/x8664-call/ccl/compiler/PPC/PPC64/ppc64-vinsns.lisp

    r6170 r6410  
    38673867
    38683868(define-ppc64-subprim-call-vinsn (mkunwind) .SPmkunwind)
     3869(define-ppc64-subprim-call-vinsn (nmkunwind) .SPnmkunwind)
    38693870
    38703871(define-ppc64-subprim-call-vinsn (progvsave) .SPprogvsave)
  • branches/x8664-call/ccl/compiler/PPC/ppc2.lisp

    r6287 r6410  
    80218021         (protform-label (backend-get-next-label))
    80228022         (old-stack (ppc2-encode-stack))
    8023          (yreg ($ ppc::arg_y)))
    8024     (! ref-interrupt-level yreg)
    8025     (ppc2-dbind seg (make-acode (%nx1-operator fixnum) -1) '*interrupt-level*)
    8026     (! mkunwind)
     8023         (ilevel '*interrupt-level*))
     8024    (! nmkunwind)
     8025    (ppc2-open-undo $undointerruptlevel)
     8026    (ppc2-new-vstack-lcell :special-value *ppc2-target-lcell-size* 0 ilevel)
     8027    (ppc2-new-vstack-lcell :special *ppc2-target-lcell-size* (ash 1 $vbitspecial) ilevel)
     8028    (ppc2-new-vstack-lcell :special-link *ppc2-target-lcell-size* 0 ilevel)
     8029    (ppc2-adjust-vstack (* 3 *ppc2-target-node-size*))   
    80278030    (! non-barrier-jump (aref *backend-labels* cleanup-label))
    80288031    (-> protform-label)
     
    80458048    (ppc2-open-undo)
    80468049    (@ protform-label)
    8047     (ppc2-dbind seg yreg '*interrupt-level*)
     8050    (ppc2-new-vstack-lcell :special-value *ppc2-target-lcell-size* 0 ilevel)
     8051    (ppc2-new-vstack-lcell :special *ppc2-target-lcell-size* (ash 1 $vbitspecial) ilevel)
     8052    (ppc2-new-vstack-lcell :special-link *ppc2-target-lcell-size* 0 ilevel)
     8053    (ppc2-adjust-vstack (* 3 *ppc2-target-node-size*))
     8054
    80488055    (ppc2-undo-body seg vreg xfer protected-form old-stack)))
    80498056
Note: See TracChangeset for help on using the changeset viewer.