Home | History | Annotate | Line # | Download | only in include
intr.h revision 1.1
      1  1.1  soren /*	$NetBSD: intr.h,v 1.1 2000/03/19 23:07:46 soren Exp $	*/
      2  1.1  soren 
      3  1.1  soren #include <mips/cpuregs.h>
      4  1.1  soren 
      5  1.1  soren #define	IPL_NONE	0	/* Disable only this interrupt. */
      6  1.1  soren #define	IPL_BIO		1	/* Disable block I/O interrupts. */
      7  1.1  soren #define	IPL_NET		2	/* Disable network interrupts. */
      8  1.1  soren #define	IPL_TTY		3	/* Disable terminal interrupts. */
      9  1.1  soren #define	IPL_IMP		4	/* memory allocation */
     10  1.1  soren #define	IPL_CLOCK	4	/* Disable clock interrupts. */
     11  1.1  soren #define	IPL_STATCLOCK	5	/* Disable profiling interrupts. */
     12  1.1  soren #define	IPL_HIGH	6	/* Disable all interrupts. */
     13  1.1  soren #define NIPL		7
     14  1.1  soren 
     15  1.1  soren /* Interrupt sharing types. */
     16  1.1  soren #define IST_NONE	0	/* none */
     17  1.1  soren #define IST_PULSE	1	/* pulsed */
     18  1.1  soren #define IST_EDGE	2	/* edge-triggered */
     19  1.1  soren #define IST_LEVEL	3	/* level-triggered */
     20  1.1  soren 
     21  1.1  soren #define SIR_CLOCK	31
     22  1.1  soren #define SIR_NET		30
     23  1.1  soren #define SIR_CLOCKMASK	((1 << SIR_CLOCK))
     24  1.1  soren #define SIR_NETMASK	((1 << SIR_NET) | SIR_CLOCKMASK)
     25  1.1  soren #define SIR_ALLMASK	(SIR_CLOCKMASK | SIR_NETMASK)
     26  1.1  soren 
     27  1.1  soren #ifndef _LOCORE
     28  1.1  soren 
     29  1.1  soren int			imask[NIPL];
     30  1.1  soren 
     31  1.1  soren extern int		_splraise(int);
     32  1.1  soren extern int		_spllower(int);
     33  1.1  soren extern int		_splset(int);
     34  1.1  soren extern int		_splget(void);
     35  1.1  soren extern void		_splnone(void);
     36  1.1  soren extern void		_setsoftintr(int);
     37  1.1  soren extern void		_clrsoftintr(int);
     38  1.1  soren 
     39  1.1  soren #define setsoftclock()	_setsoftintr(MIPS_SOFT_INT_MASK_0)
     40  1.1  soren #define setsoftnet()	_setsoftintr(MIPS_SOFT_INT_MASK_1)
     41  1.1  soren #define clearsoftclock() _clrsoftintr(MIPS_SOFT_INT_MASK_0)
     42  1.1  soren #define clearsoftnet()	_clrsoftintr(MIPS_SOFT_INT_MASK_1)
     43  1.1  soren 
     44  1.1  soren #define splhigh()       _splraise(MIPS_INT_MASK)
     45  1.1  soren #define spl0()          (void)_spllower(0)
     46  1.1  soren #define splx(s)         (void)_splset(s)
     47  1.1  soren #define SPLBIO		MIPS_INT_MASK_4
     48  1.1  soren #define SPLNET		SPLBIO | MIPS_INT_MASK_1 | MIPS_INT_MASK_2
     49  1.1  soren #define SPLTTY		SPLNET | MIPS_INT_MASK_3
     50  1.1  soren #define SPLCLOCK	SPLTTY | MIPS_INT_MASK_0 | MIPS_INT_MASK_5
     51  1.1  soren #define splbio()        _splraise(SPLBIO)
     52  1.1  soren #define splnet()        _splraise(SPLNET)
     53  1.1  soren #define spltty()        _splraise(SPLTTY)
     54  1.1  soren #define splimp()	_splraise(SPLTTY)
     55  1.1  soren #define splclock()      _splraise(SPLCLOCK)
     56  1.1  soren #define splstatclock()  splclock()
     57  1.1  soren #define spllowersoftclock() _spllower(MIPS_SOFT_INT_MASK_0)
     58  1.1  soren #define splsoftclock()	_splraise(MIPS_SOFT_INT_MASK_0)
     59  1.1  soren #define splsoftnet()	_splraise(MIPS_SOFT_INT_MASK_1)
     60  1.1  soren 
     61  1.1  soren extern unsigned int	intrcnt[];
     62  1.1  soren #define SOFTCLOCK_INTR	0
     63  1.1  soren #define SOFTNET_INTR	1
     64  1.1  soren #define CLOCK_INTR	2
     65  1.1  soren #define FPU_INTR	3
     66  1.1  soren 
     67  1.1  soren /* Handle device interrupts. */
     68  1.1  soren extern int		(*mips_hardware_intr)(unsigned int, unsigned int,
     69  1.1  soren 						unsigned int, unsigned int);
     70  1.1  soren 
     71  1.1  soren /* Handle software interrupts. */
     72  1.1  soren extern void		(*mips_software_intr)(int);
     73  1.1  soren 
     74  1.1  soren #endif /* _LOCORE */
     75