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