Changeset 5359
- Timestamp:
- Oct 17, 2006, 12:45:25 PM (18 years ago)
- Location:
- trunk/ccl/compiler/X86
- Files:
-
- 2 edited
-
X8664/x8664-vinsns.lisp (modified) (1 diff)
-
x862.lisp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/compiler/X86/X8664/x8664-vinsns.lisp
r5343 r5359 1654 1654 (define-x8664-subprim-call-vinsn (bind-interrupt-level-0) .SPbind-interrupt-level-0) 1655 1655 1656 (define-x8664-vinsn bind-interrupt-level-0-inline (() 1657 () 1658 ((temp :imm))) 1659 (movq (:@ (:%seg :rcontext) x8664::tcr.tlb-pointer) (:%q temp)) 1660 (cmpq (:$b 0) (:@ x8664::interrupt-level-binding-index (:%q temp))) 1661 (pushq (:@ x8664::interrupt-level-binding-index (:%q temp))) 1662 (pushq (:$b x8664::interrupt-level-binding-index)) 1663 (pushq (:@ (:%seg :rcontext) x8664::tcr.db-link)) 1664 (movq (:$l 0) (:@ x8664::interrupt-level-binding-index (:%q temp))) 1665 (movq (:%q x8664::rsp) (:@ (:%seg :rcontext) x8664::tcr.db-link)) 1666 (jns.pt :done) 1667 (btrq (:$ub 63) (:@ (:%seg :rcontext) x8664::tcr.interrupt-pending)) 1668 (jae.pt :done) 1669 (ud2a) 1670 (:byte 2) 1671 :done) 1672 1673 1674 1656 1675 (define-x8664-subprim-call-vinsn (bind-interrupt-level-m1) .SPbind-interrupt-level-m1) 1657 1676 1677 (define-x8664-vinsn bind-interrupt-level-m1-inline (() 1678 () 1679 ((temp :imm))) 1680 (movq (:@ (:%seg :rcontext) x8664::tcr.tlb-pointer) (:%q temp)) 1681 (pushq (:@ x8664::interrupt-level-binding-index (:%q temp))) 1682 (pushq (:$b x8664::interrupt-level-binding-index)) 1683 (pushq (:@ (:%seg :rcontext) x8664::tcr.db-link)) 1684 (movq (:$l (ash -1 x8664::fixnumshift)) (:@ x8664::interrupt-level-binding-index (:%q temp))) 1685 (movq (:%q x8664::rsp) (:@ (:%seg :rcontext) x8664::tcr.db-link))) 1686 1658 1687 (define-x8664-subprim-call-vinsn (bind-interrupt-level) .SPbind-interrupt-level) 1659 1688 1660 1689 (define-x8664-subprim-call-vinsn (unbind-interrupt-level) .SPunbind-interrupt-level) 1690 1691 (define-x8664-vinsn unbind-interrupt-level-inline (() 1692 () 1693 ((link :imm) 1694 (curval :imm) 1695 (oldval :imm) 1696 (tlb :imm))) 1697 (movq (:@ (:%seg :rcontext) x8664::tcr.tlb-pointer) (:%q tlb)) 1698 (movq (:@ (:%seg :rcontext) x8664::tcr.db-link) (:%q link)) 1699 (movq (:@ x8664::interrupt-level-binding-index (:%q tlb)) (:%q curval)) 1700 (testq (:%q curval) (:%q curval)) 1701 (movq (:@ 8 #|binding.val|# (:%q link)) (:%q oldval)) 1702 (movq (:@ #|binding.link|# (:%q link)) (:%q link)) 1703 (movq (:%q oldval) (:@ x8664::interrupt-level-binding-index (:%q tlb))) 1704 (movq (:%q link) (:@ (:%seg :rcontext) x8664::tcr.db-link)) 1705 (jns.pt :done) 1706 (testq (:%q oldval) (:%q oldval)) 1707 (js.pt :done) 1708 (btrq (:$ub 63) (:@ (:%seg :rcontext) x8664::tcr.interrupt-pending)) 1709 (jae.pt :done) 1710 (ud2a) 1711 (:byte 2) 1712 :done) 1661 1713 1662 1714 (define-x8664-vinsn (jump-return-pc :jumpLR) -
trunk/ccl/compiler/X86/x862.lisp
r5346 r5359 3764 3764 (cond ((eq sym '*interrupt-level*) 3765 3765 (let* ((fixval (acode-fixnum-form-p value))) 3766 (cond ((eql fixval 0) (! bind-interrupt-level-0)) 3767 ((eql fixval -1) (! bind-interrupt-level-m1)) 3766 (cond ((eql fixval 0) 3767 (if *x862-open-code-inline* 3768 (! bind-interrupt-level-0-inline) 3769 (! bind-interrupt-level-0))) 3770 ((eql fixval -1) 3771 (if *x862-open-code-inline* 3772 (! bind-interrupt-level-m1-inline) 3773 (! bind-interrupt-level-m1))) 3768 3774 (t 3769 3775 (if ea-p … … 4803 4809 (! dpayback n) 4804 4810 (setq n 0)) 4805 (! unbind-interrupt-level)) 4811 (if *x862-open-code-inline* 4812 (! unbind-interrupt-level-inline) 4813 (! unbind-interrupt-level))) 4806 4814 (nx-error "unknown payback token ~s" r))))))) 4807 4815
Note:
See TracChangeset
for help on using the changeset viewer.
