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