Home | History | Annotate | Line # | Download | only in include
psl.h revision 1.8
      1  1.8   veego /*	$NetBSD: psl.h,v 1.8 1996/04/21 21:13:22 veego Exp $	*/
      2  1.7     cgd 
      3  1.6  chopps #ifndef _MACHINE_PSL_H_
      4  1.6  chopps #define _MACHINE_PSL_H_
      5  1.1      mw 
      6  1.4      mw #include <m68k/psl.h>
      7  1.5  chopps 
      8  1.8   veego #if defined(_KERNEL) && !defined(_LOCORE)
      9  1.8   veego 
     10  1.8   veego #if 0
     11  1.8   veego #define _debug_spl(s) \
     12  1.8   veego ({ \
     13  1.8   veego         register int _spl_r; \
     14  1.8   veego \
     15  1.8   veego         __asm __volatile ("clrl %0; movew sr,%0; movew %1,sr" : \
     16  1.8   veego                 "&=d" (_spl_r) : "di" (s)); \
     17  1.8   veego 	if ((_spl_r&PSL_IPL) > ((s)&PSL_IPL)&&((s)&PSL_IPL)!=PSL_IPL1) \
     18  1.8   veego 		printf ("%s:%d:spl(%d) ==> spl(%d)!!\n",__FILE__,__LINE__, \
     19  1.8   veego 		    ((PSL_IPL&_spl_r)>>8), ((PSL_IPL&(s))>>8)); \
     20  1.8   veego         _spl_r; \
     21  1.8   veego })
     22  1.8   veego #else
     23  1.8   veego /*
     24  1.8   veego  * Don't lower IPL below current IPL (unless new IPL is 6)
     25  1.8   veego  */
     26  1.8   veego #define _debug_spl(s) \
     27  1.8   veego ({ \
     28  1.8   veego         register int _spl_r; \
     29  1.8   veego \
     30  1.8   veego         __asm __volatile ("clrl %0; movew sr,%0" : \
     31  1.8   veego                 "&=d" (_spl_r)); \
     32  1.8   veego 	if ((((s)&PSL_IPL) >= PSL_IPL6) || (_spl_r&PSL_IPL) < ((s)&PSL_IPL) || ((s)&PSL_IPL) <= PSL_IPL1) \
     33  1.8   veego 		__asm __volatile ("movew %0,sr" : : "di" (s)); \
     34  1.8   veego         _spl_r; \
     35  1.8   veego })
     36  1.8   veego #endif
     37  1.8   veego 
     38  1.8   veego #define _spl_no_check(s) \
     39  1.8   veego ({ \
     40  1.8   veego         register int _spl_r; \
     41  1.8   veego \
     42  1.8   veego         __asm __volatile ("clrl %0; movew sr,%0; movew %1,sr" : \
     43  1.8   veego                 "&=d" (_spl_r) : "di" (s)); \
     44  1.8   veego         _spl_r; \
     45  1.8   veego })
     46  1.8   veego #if defined (DEBUGXX)		/* No workee */
     47  1.8   veego #define _spl _debug_spl
     48  1.8   veego #else
     49  1.8   veego #define _spl _spl_no_check
     50  1.8   veego #endif
     51  1.8   veego 
     52  1.8   veego #define spl0()	_spl(PSL_S|PSL_IPL0)
     53  1.8   veego #define spl1()	_spl(PSL_S|PSL_IPL1)
     54  1.8   veego #define spl2()	_spl(PSL_S|PSL_IPL2)
     55  1.8   veego #define spl3()	_spl(PSL_S|PSL_IPL3)
     56  1.8   veego #define spl4()	_spl(PSL_S|PSL_IPL4)
     57  1.8   veego #define spl5()	_spl(PSL_S|PSL_IPL5)
     58  1.8   veego #define spl6()	_spl(PSL_S|PSL_IPL6)
     59  1.8   veego #define spl7()	_spl(PSL_S|PSL_IPL7)
     60  1.8   veego 
     61  1.8   veego #define splnone()	spl0()
     62  1.8   veego #define splsoftclock()	spl1()
     63  1.8   veego #define splsoftnet()	spl1()
     64  1.8   veego #define splbio()	spl3()
     65  1.8   veego #define splnet()	spl3()
     66  1.8   veego #define spltty()	spl4()
     67  1.8   veego #define splimp()	spl4()
     68  1.8   veego #ifndef LEV6_DEFER
     69  1.8   veego #define splclock()	spl6()
     70  1.8   veego #define splstatclock()	spl6()
     71  1.8   veego #define splvm()		spl6()
     72  1.8   veego #define splhigh()	spl7()
     73  1.8   veego #define splsched()	spl7()
     74  1.8   veego #else
     75  1.8   veego #define splclock()	spl4()
     76  1.8   veego #define splstatclock()	spl4()
     77  1.8   veego #define splvm()		spl4()
     78  1.8   veego #define splhigh()	spl4()
     79  1.8   veego #define splsched()	spl4()
     80  1.5  chopps #endif
     81  1.8   veego 
     82  1.8   veego #define splx(s)		_spl_no_check(s)
     83  1.8   veego 
     84  1.8   veego #endif	/* KERNEL && !_LOCORE */
     85  1.8   veego #endif	/* _MACHINE_PSL_H_ */
     86