Changeset 5356


Ignore:
Timestamp:
Oct 17, 2006, 12:39:09 PM (18 years ago)
Author:
Gary Byers
Message:

bind/unbind *interrupt-level* inline.

Location:
trunk/ccl/compiler/PPC
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/compiler/PPC/PPC32/ppc32-vinsns.lisp

    r5349 r5356  
    37983798(define-ppc32-subprim-call-vinsn (bind-interrupt-level-0) .SPbind-interrupt-level-0)
    37993799
     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                                                   
    38003826(define-ppc32-subprim-call-vinsn (bind-interrupt-level-m1) .SPbind-interrupt-level-m1)
    38013827
     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
    38023847(define-ppc32-subprim-call-vinsn (bind-interrupt-level) .SPbind-interrupt-level)
    38033848
    38043849(define-ppc32-subprim-call-vinsn (unbind-interrupt-level) .SPunbind-interrupt-level)
    38053850
     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 
    38063876
    38073877
  • trunk/ccl/compiler/PPC/PPC64/ppc64-vinsns.lisp

    r5349 r5356  
    37783778(define-ppc64-subprim-call-vinsn (bind-interrupt-level-0) .SPbind-interrupt-level-0)
    37793779
     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
    37803804(define-ppc64-subprim-call-vinsn (bind-interrupt-level-m1) .SPbind-interrupt-level-m1)
    37813805
     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
    37823825(define-ppc64-subprim-call-vinsn (bind-interrupt-level) .SPbind-interrupt-level)
    37833826
    37843827(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)
    37853853
    37863854(define-ppc64-vinsn fixnum->fpr (((f :double-float))
  • trunk/ccl/compiler/PPC/ppc2.lisp

    r5350 r5356  
    36793679      (cond ((eq sym '*interrupt-level*)
    36803680             (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)))
    36833687                     (t
    36843688                      (if ea-p
     
    49064910                (! dpayback n)
    49074911                (setq n 0))
    4908               (! unbind-interrupt-level))
     4912              (if *ppc2-open-code-inline*
     4913                (! unbind-interrupt-level-inline)
     4914                (! unbind-interrupt-level)))
    49094915            (nx-error "unknown payback token ~s" r)))))))
    49104916
Note: See TracChangeset for help on using the changeset viewer.