1 1.5 soren /* $NetBSD: intr.h,v 1.5 2000/04/28 15:55:52 soren Exp $ */ 2 1.1 soren 3 1.1 soren #define IPL_NONE 0 /* Disable only this interrupt. */ 4 1.1 soren #define IPL_BIO 1 /* Disable block I/O interrupts. */ 5 1.1 soren #define IPL_NET 2 /* Disable network interrupts. */ 6 1.1 soren #define IPL_TTY 3 /* Disable terminal interrupts. */ 7 1.3 soren #define IPL_IMP 4 /* Memory allocation */ 8 1.3 soren #define IPL_CLOCK 5 /* Disable clock interrupts. */ 9 1.3 soren #define IPL_STATCLOCK 6 /* Disable profiling interrupts. */ 10 1.3 soren #define IPL_HIGH 7 /* Disable all interrupts. */ 11 1.3 soren #define NIPL 8 12 1.1 soren 13 1.1 soren /* Interrupt sharing types. */ 14 1.1 soren #define IST_NONE 0 /* none */ 15 1.1 soren #define IST_PULSE 1 /* pulsed */ 16 1.1 soren #define IST_EDGE 2 /* edge-triggered */ 17 1.1 soren #define IST_LEVEL 3 /* level-triggered */ 18 1.1 soren 19 1.5 soren /* Soft interrupt masks. */ 20 1.5 soren #define SIR_CLOCK 31 21 1.5 soren #define SIR_NET 30 22 1.5 soren #define SIR_CLOCKMASK ((1 << SIR_CLOCK)) 23 1.5 soren #define SIR_NETMASK ((1 << SIR_NET) | SIR_CLOCKMASK) 24 1.5 soren #define SIR_ALLMASK (SIR_CLOCKMASK | SIR_NETMASK) 25 1.5 soren 26 1.3 soren #ifdef _KERNEL 27 1.1 soren #ifndef _LOCORE 28 1.5 soren 29 1.5 soren #include <mips/cpuregs.h> 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.2 soren #define SPLSOFT MIPS_SOFT_INT_MASK_0 | MIPS_SOFT_INT_MASK_1 48 1.2 soren #define SPLBIO SPLSOFT | MIPS_INT_MASK_4 49 1.1 soren #define SPLNET SPLBIO | MIPS_INT_MASK_1 | MIPS_INT_MASK_2 50 1.1 soren #define SPLTTY SPLNET | MIPS_INT_MASK_3 51 1.1 soren #define SPLCLOCK SPLTTY | MIPS_INT_MASK_0 | MIPS_INT_MASK_5 52 1.1 soren #define splbio() _splraise(SPLBIO) 53 1.1 soren #define splnet() _splraise(SPLNET) 54 1.1 soren #define spltty() _splraise(SPLTTY) 55 1.1 soren #define splclock() _splraise(SPLCLOCK) 56 1.3 soren #define splimp() splclock() 57 1.1 soren #define splstatclock() splclock() 58 1.1 soren #define splsoftclock() _splraise(MIPS_SOFT_INT_MASK_0) 59 1.4 soda #define splsoftnet() _splraise(MIPS_SOFT_INT_MASK_0|MIPS_SOFT_INT_MASK_1) 60 1.3 soren #define spllowersoftclock() _spllower(MIPS_SOFT_INT_MASK_0) 61 1.1 soren 62 1.1 soren extern unsigned int intrcnt[]; 63 1.1 soren #define SOFTCLOCK_INTR 0 64 1.1 soren #define SOFTNET_INTR 1 65 1.1 soren 66 1.3 soren extern void * cpu_intr_establish(int, int, int (*)(void *), void *); 67 1.3 soren extern void * icu_intr_establish(int, int, int, int (*)(void *), void *); 68 1.1 soren 69 1.3 soren #endif /* !_LOCORE */ 70 1.1 soren #endif /* _LOCORE */ 71