Changeset 5356
- Timestamp:
- Oct 17, 2006, 12:39:09 PM (18 years ago)
- Location:
- trunk/ccl/compiler/PPC
- Files:
-
- 3 edited
-
PPC32/ppc32-vinsns.lisp (modified) (1 diff)
-
PPC64/ppc64-vinsns.lisp (modified) (1 diff)
-
ppc2.lisp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/compiler/PPC/PPC32/ppc32-vinsns.lisp
r5349 r5356 3798 3798 (define-ppc32-subprim-call-vinsn (bind-interrupt-level-0) .SPbind-interrupt-level-0) 3799 3799 3800 (define-ppc32-vinsn bind-interrupt-level-0-inline (() 3801 () 3802 ((tlb :imm) 3803 (value :imm) 3804 (link :imm) 3805 (temp :imm))) 3806 (lwz tlb ppc32::tcr.tlb-pointer ppc32::rcontext) 3807 (lwz value ppc32::interrupt-level-binding-index tlb) 3808 (lwz link ppc32::tcr.db-link ppc32::rcontext) 3809 (cmpwi value 0) 3810 (li temp ppc32::interrupt-level-binding-index) 3811 (stwu value -4 ppc::vsp) 3812 (stwu temp -4 ppc::vsp) 3813 (stwu link -4 ppc::vsp) 3814 (stw ppc::rzero ppc32::interrupt-level-binding-index tlb) 3815 (stw ppc::vsp ppc32::tcr.db-link ppc32::rcontext) 3816 (beq+ :done) 3817 (mr ppc::nargs value) 3818 (bgt :do-trap) 3819 (lwz ppc::nargs ppc32::tcr.interrupt-pending ppc32::rcontext) 3820 :do-trap 3821 (twgti ppc::nargs 0) 3822 :done) 3823 3824 3825 3800 3826 (define-ppc32-subprim-call-vinsn (bind-interrupt-level-m1) .SPbind-interrupt-level-m1) 3801 3827 3828 (define-ppc32-vinsn bind-interrupt-level-m1-inline (() 3829 () 3830 ((tlb :imm) 3831 (oldvalue :imm) 3832 (link :imm) 3833 (newvalue :imm) 3834 (idx :imm))) 3835 (li newvalue (ash -1 ppc32::fixnumshift)) 3836 (li idx ppc32::interrupt-level-binding-index) 3837 (lwz tlb ppc32::tcr.tlb-pointer ppc32::rcontext) 3838 (lwz oldvalue ppc32::interrupt-level-binding-index tlb) 3839 (lwz link ppc32::tcr.db-link ppc32::rcontext) 3840 (stwu oldvalue -4 ppc::vsp) 3841 (stwu idx -4 ppc::vsp) 3842 (stwu link -4 ppc::vsp) 3843 (stw newvalue ppc32::interrupt-level-binding-index tlb) 3844 (stw ppc::vsp ppc32::tcr.db-link ppc32::rcontext) 3845 :done) 3846 3802 3847 (define-ppc32-subprim-call-vinsn (bind-interrupt-level) .SPbind-interrupt-level) 3803 3848 3804 3849 (define-ppc32-subprim-call-vinsn (unbind-interrupt-level) .SPunbind-interrupt-level) 3805 3850 3851 (define-ppc32-vinsn unbind-interrupt-level-inline (() 3852 () 3853 ((tlb :imm) 3854 (link :imm) 3855 (value :imm) 3856 (save-nargs :u32) 3857 (crf0 :crf) 3858 (crf1 :crf))) 3859 (lwz tlb ppc32::tcr.tlb-pointer ppc32::rcontext) 3860 (lwz value ppc32::interrupt-level-binding-index tlb) 3861 (lwz link ppc32::tcr.db-link ppc32::rcontext) 3862 (cmpwi crf1 value 0) 3863 (lwz value 8 link) 3864 (lwz link 0 link) 3865 (cmpwi crf0 value 0) 3866 (stw value ppc32::interrupt-level-binding-index tlb) 3867 (stw link ppc32::tcr.db-link ppc32::rcontext) 3868 (bge crf1 :done) 3869 (blt crf0 :done) 3870 (mr save-nargs ppc::nargs) 3871 (lwz ppc::nargs ppc32::tcr.interrupt-pending ppc32::rcontext) 3872 (twgti ppc::nargs 0) 3873 (mr ppc::nargs save-nargs) 3874 :done) 3875 3806 3876 3807 3877 -
trunk/ccl/compiler/PPC/PPC64/ppc64-vinsns.lisp
r5349 r5356 3778 3778 (define-ppc64-subprim-call-vinsn (bind-interrupt-level-0) .SPbind-interrupt-level-0) 3779 3779 3780 (define-ppc64-vinsn bind-interrupt-level-0-inline (() 3781 () 3782 ((tlb :imm) 3783 (value :imm) 3784 (link :imm) 3785 (temp :imm))) 3786 (ld tlb ppc64::tcr.tlb-pointer ppc64::rcontext) 3787 (ld value ppc64::interrupt-level-binding-index tlb) 3788 (ld link ppc64::tcr.db-link ppc64::rcontext) 3789 (cmpdi value 0) 3790 (li temp ppc64::interrupt-level-binding-index) 3791 (stdu value -8 ppc::vsp) 3792 (stdu temp -8 ppc::vsp) 3793 (stdu link -8 ppc::vsp) 3794 (std ppc::rzero ppc64::interrupt-level-binding-index tlb) 3795 (std ppc::vsp ppc64::tcr.db-link ppc64::rcontext) 3796 (beq+ :done) 3797 (mr ppc::nargs value) 3798 (bgt :do-trap) 3799 (ld ppc::nargs ppc64::tcr.interrupt-pending ppc64::rcontext) 3800 :do-trap 3801 (tdgti ppc::nargs 0) 3802 :done) 3803 3780 3804 (define-ppc64-subprim-call-vinsn (bind-interrupt-level-m1) .SPbind-interrupt-level-m1) 3781 3805 3806 (define-ppc64-vinsn bind-interrupt-level-m1-inline (() 3807 () 3808 ((tlb :imm) 3809 (oldvalue :imm) 3810 (link :imm) 3811 (newvalue :imm) 3812 (idx :imm))) 3813 (li newvalue (ash -1 ppc64::fixnumshift)) 3814 (li idx ppc64::interrupt-level-binding-index) 3815 (ld tlb ppc64::tcr.tlb-pointer ppc64::rcontext) 3816 (ld oldvalue ppc64::interrupt-level-binding-index tlb) 3817 (ld link ppc64::tcr.db-link ppc64::rcontext) 3818 (stdu oldvalue -8 ppc::vsp) 3819 (stdu idx -8 ppc::vsp) 3820 (stdu link -8 ppc::vsp) 3821 (std newvalue ppc64::interrupt-level-binding-index tlb) 3822 (std ppc::vsp ppc64::tcr.db-link ppc64::rcontext) 3823 :done) 3824 3782 3825 (define-ppc64-subprim-call-vinsn (bind-interrupt-level) .SPbind-interrupt-level) 3783 3826 3784 3827 (define-ppc64-subprim-call-vinsn (unbind-interrupt-level) .SPunbind-interrupt-level) 3828 3829 (define-ppc64-vinsn unbind-interrupt-level-inline (() 3830 () 3831 ((tlb :imm) 3832 (link :imm) 3833 (value :imm) 3834 (save-nargs :u32) 3835 (crf0 :crf) 3836 (crf1 :crf))) 3837 (ld tlb ppc64::tcr.tlb-pointer ppc64::rcontext) 3838 (ld value ppc64::interrupt-level-binding-index tlb) 3839 (ld link ppc64::tcr.db-link ppc64::rcontext) 3840 (cmpdi crf1 value 0) 3841 (ld value 16 link) 3842 (ld link 0 link) 3843 (cmpdi crf0 value 0) 3844 (std value ppc64::interrupt-level-binding-index tlb) 3845 (std link ppc64::tcr.db-link ppc64::rcontext) 3846 (bge crf1 :done) 3847 (blt crf0 :done) 3848 (mr save-nargs ppc::nargs) 3849 (ld ppc::nargs ppc64::tcr.interrupt-pending ppc64::rcontext) 3850 (tdgti ppc::nargs 0) 3851 (mr ppc::nargs save-nargs) 3852 :done) 3785 3853 3786 3854 (define-ppc64-vinsn fixnum->fpr (((f :double-float)) -
trunk/ccl/compiler/PPC/ppc2.lisp
r5350 r5356 3679 3679 (cond ((eq sym '*interrupt-level*) 3680 3680 (let* ((fixval (acode-fixnum-form-p value))) 3681 (cond ((eql fixval 0) (! bind-interrupt-level-0)) 3682 ((eql fixval -1) (! bind-interrupt-level-m1)) 3681 (cond ((eql fixval 0) (if *ppc2-open-code-inline* 3682 (! bind-interrupt-level-0-inline) 3683 (! bind-interrupt-level-0))) 3684 ((eql fixval -1) (if *ppc2-open-code-inline* 3685 (! bind-interrupt-level-m1-inline) 3686 (! bind-interrupt-level-m1))) 3683 3687 (t 3684 3688 (if ea-p … … 4906 4910 (! dpayback n) 4907 4911 (setq n 0)) 4908 (! unbind-interrupt-level)) 4912 (if *ppc2-open-code-inline* 4913 (! unbind-interrupt-level-inline) 4914 (! unbind-interrupt-level))) 4909 4915 (nx-error "unknown payback token ~s" r))))))) 4910 4916
Note:
See TracChangeset
for help on using the changeset viewer.
