1 /* $NetBSD: intr.h,v 1.1 2002/03/06 02:13:44 simonb Exp $ */ 2 3 /* 4 * Copyright 2000, 2001 5 * Broadcom Corporation. All rights reserved. 6 * 7 * This software is furnished under license and may be used and copied only 8 * in accordance with the following terms and conditions. Subject to these 9 * conditions, you may download, copy, install, use, modify and distribute 10 * modified or unmodified copies of this software in source and/or binary 11 * form. No title or ownership is transferred hereby. 12 * 13 * 1) Any source code used, modified or distributed must reproduce and 14 * retain this copyright notice and list of conditions as they appear in 15 * the source file. 16 * 17 * 2) No right is granted to use any trade name, trademark, or logo of 18 * Broadcom Corporation. Neither the "Broadcom Corporation" name nor any 19 * trademark or logo of Broadcom Corporation may be used to endorse or 20 * promote products derived from this software without the prior written 21 * permission of Broadcom Corporation. 22 * 23 * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR IMPLIED 24 * WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF 25 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR 26 * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM BE LIABLE 27 * FOR ANY DAMAGES WHATSOEVER, AND IN PARTICULAR, BROADCOM SHALL NOT BE 28 * LIABLE FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 29 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 30 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 31 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 32 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 33 * OR OTHERWISE), EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34 */ 35 36 #ifndef _SBMIPS_INTR_H_ 37 #define _SBMIPS_INTR_H_ 38 39 #include <machine/systemsw.h> 40 41 /* Interrupt levels */ 42 #define IPL_SERIAL 0 43 #define IPL_STATCLOCK 1 44 #define IPL_CLOCK 2 45 #define IPL_BIO 3 46 #define IPL_NET 4 47 #define IPL_TTY 5 48 #define _NIPL 6 49 50 #define IPL_SOFTSERIAL 1000 51 #define IPL_SOFTNET 1001 52 #define IPL_SOFTCLOCK 1002 53 54 #define _IMR_SOFT (MIPS_SOFT_INT_MASK_0 | MIPS_SOFT_INT_MASK_1) 55 #define _IMR_VM (_IMR_SOFT | MIPS_INT_MASK_0) 56 #define _IMR_SCHED (_IMR_VM | MIPS_INT_MASK_1 | MIPS_INT_MASK_5) 57 #define _IMR_SERIAL (_IMR_SCHED | MIPS_INT_MASK_2) 58 #define _IMR_HIGH (MIPS_INT_MASK) 59 60 #define splbio() _splraise(_IMR_VM) 61 #define splclock() _splraise(_IMR_SCHED) 62 #define splhigh() _splraise(_IMR_HIGH) 63 #define spllock() splhigh() 64 #define splvm() _splraise(_IMR_VM) 65 #define splnet() _splraise(_IMR_VM) 66 #define splsched() _splraise(_IMR_SCHED) 67 #define splserial() _splraise(_IMR_SERIAL) 68 #define splsoftclock() _splraise(_IMR_SOFT) 69 #define splsoftnet() _splraise(_IMR_SOFT) 70 #define splsoftserial() _splraise(_IMR_SOFT) 71 #define splstatclock() _splraise(_IMR_SCHED) 72 #define spltty() _splraise(_IMR_VM) 73 74 #define spl0() _spllower(0) 75 #define spllowersoftclock() _spllower(_IMR_SOFT) 76 #define splx(s) _splset(s) 77 78 #define __GENERIC_SOFT_INTERRUPTS 79 80 void *softintr_establish(int level, void (*fun)(void *), void *arg); 81 void softintr_disestablish(void *cookie); 82 void softintr_schedule(void *cookie); 83 84 /* for interrupt dispatch code */ 85 void dosoftints(void); 86 87 /* XXX backward-compat */ 88 void setsoftclock(void); 89 void setsoftnet(void); 90 91 extern int _splraise(int); 92 extern int _spllower(int); 93 extern int _splset(int); 94 extern int _splget(void); 95 extern void _splnone(void); 96 extern void _setsoftintr(int); 97 extern void _clrsoftintr(int); 98 99 /* XXX */ 100 extern u_long intrcnt[]; 101 #define SOFTCLOCK_INTR 0 102 #define SOFTNET_INTR 1 103 104 #endif /* _SBMIPS_INTR_H_ */ 105