Changeset 8876


Ignore:
Timestamp:
Mar 24, 2008, 2:27:27 PM (11 years ago)
Author:
rme
Message:

x862-nlexit: add x8632 case to mark nargs in use before calling x862-dpayback

x862-dpayback: call out to do unbind-interrupt-level

x862-spread-lambda-list: barf if target is x8632; to be corrected later.
(l1-socket.lisp won't compile until this is fixed.)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ia32/compiler/X86/x862.lisp

    r8841 r8876  
    729729                              (srt-frag (x86-lap-label-frag label))
    730730                              (srt-index (x86-lap-label-offset label)))
    731 ;;                       (format t "~&end-code-label = ~s offset = ~s addr = ~s" (setq label (find end-code-tag *x86-lap-labels*
    732 ;;                                                                                                 :test #'eq :key #'x86-lap-label-name))
    733 ;;                               (x86-lap-label-offset label)
    734 ;;                               (x86-lap-label-address label))
    735 ;;                       (format t "~&start-label = ~s offset = ~s addr = ~s" (setq label (find start-tag *x86-lap-labels*
    736 ;;                                                                           :test #'eq :key #'x86-lap-label-name))
    737 ;;                               (x86-lap-label-offset label)
    738 ;;                               (x86-lap-label-address label))
    739731                         ;; fill in self-reference offsets
    740732                         (do-dll-nodes (frag frag-list)
     
    54075399                  (push reason unbind))))
    54085400            (if unbind
    5409               (let* ((*available-backend-imm-temps* *available-backend-imm-temps*))
    5410                 (when retval (use-imm-temp x8664::nargs.q))
    5411                 (x862-dpayback-list seg (nreverse unbind))))
     5401              (target-arch-case
     5402               (:x8632
     5403                (let* ((*available-backend-node-temps* *available-backend-node-temps*))
     5404                  (when retval (use-node-temp x8632::nargs))
     5405                  (x862-dpayback-list seg (nreverse unbind))))
     5406               (:x8664
     5407                (let* ((*available-backend-imm-temps* *available-backend-imm-temps*))
     5408                  (when retval (use-imm-temp x8664::nargs.q))
     5409                  (x862-dpayback-list seg (nreverse unbind))))))
    54125410            (when (and (neq lastcatch dest)
    54135411                       (%i>
     
    54555453                (! dpayback n)
    54565454                (setq n 0))
    5457               (if *x862-open-code-inline*
    5458                 (let* ((*available-backend-node-temps*
    5459                         (target-arch-case
    5460                          ;; I don't see where %ecx is used...
    5461                          (:x8632 (bitclr x8632::arg_z *available-backend-node-temps*))
    5462                          (:x8664 (bitclr x8664::arg_z (bitclr x8664::rcx *available-backend-node-temps*))))))
     5455              (if (and *x862-open-code-inline*
     5456                       (target-arch-case
     5457                        (:x8632 nil)
     5458                        (:x8664 t)))
     5459                (let* ((*available-backend-node-temps* (bitclr x8664::arg_z (bitclr x8664::rcx *available-backend-node-temps*))))
    54635460                  (! unbind-interrupt-level-inline))
    54645461                (! unbind-interrupt-level)))
    5465             (nx-error "unknown payback token ~s" r)))))))
     5462            (nx-error "unknown payback token ~s" r)))))))
    54665463
    54675464(defun x862-spread-lambda-list (seg listform whole req opt rest keys
     
    54775474           (doadlword (dpb nkeys (byte 8 16) (dpb numopt (byte 8 8) (dpb numreq (byte 8 0) 0 )))))
    54785475      (declare (fixnum numopt nkeys numreq vtotal doadlword))
     5476      (target-arch-case (:x8632 (error "x862-spread-lambda-list: fix me")))
    54795477      (when (or (> numreq 255) (> numopt 255) (> nkeys 255))
    54805478        (error "A lambda list can contain a maximum of 255 required, 255 optional, and 255 keywords args"))
Note: See TracChangeset for help on using the changeset viewer.