Home | History | Annotate | Line # | Download | only in include
intr.h revision 1.18.16.1
      1  1.18.16.1  jmcneill /*	$NetBSD: intr.h,v 1.18.16.1 2007/12/09 19:34:22 jmcneill Exp $	*/
      2        1.1        is 
      3        1.7        is /*-
      4        1.8        is  * Copyright (c) 1997 The NetBSD Foundation, Inc.
      5        1.1        is  * All rights reserved.
      6        1.1        is  *
      7        1.7        is  * This code is derived from software contributed to The NetBSD Foundation
      8        1.7        is  * by Ignatios Souvatzis.
      9        1.7        is  *
     10        1.1        is  * Redistribution and use in source and binary forms, with or without
     11        1.1        is  * modification, are permitted provided that the following conditions
     12        1.1        is  * are met:
     13        1.1        is  * 1. Redistributions of source code must retain the above copyright
     14        1.1        is  *    notice, this list of conditions and the following disclaimer.
     15        1.1        is  * 2. Redistributions in binary form must reproduce the above copyright
     16        1.1        is  *    notice, this list of conditions and the following disclaimer in the
     17        1.1        is  *    documentation and/or other materials provided with the distribution.
     18        1.1        is  * 3. All advertising materials mentioning features or use of this software
     19        1.1        is  *    must display the following acknowledgement:
     20        1.7        is  *        This product includes software developed by the NetBSD
     21        1.7        is  *        Foundation, Inc. and its contributors.
     22        1.7        is  * 4. Neither the name of The NetBSD Foundation nor the names of its
     23        1.7        is  *    contributors may be used to endorse or promote products derived
     24        1.7        is  *    from this software without specific prior written permission.
     25        1.1        is  *
     26        1.7        is  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     27        1.7        is  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     28        1.7        is  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     29        1.7        is  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     30        1.7        is  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     31        1.7        is  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     32        1.7        is  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     33        1.7        is  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     34        1.7        is  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     35        1.7        is  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     36        1.7        is  * POSSIBILITY OF SUCH DAMAGE.
     37        1.1        is  */
     38        1.1        is 
     39        1.1        is /*
     40        1.1        is  * machine/intr.h for the Amiga port.
     41        1.1        is  * Currently, only a wrapper, for most of the stuff, around the old
     42        1.1        is  * include files.
     43        1.1        is  */
     44        1.1        is 
     45       1.15   tsutsui #ifndef _AMIGA_INTR_H_
     46       1.15   tsutsui #define _AMIGA_INTR_H_
     47        1.1        is 
     48        1.1        is #include <amiga/amiga/isr.h>
     49        1.1        is #include <amiga/include/mtpr.h>
     50       1.13       chs #include <m68k/psl.h>
     51        1.1        is 
     52       1.16      yamt #define	IPL_NONE	0
     53       1.16      yamt #define	IPL_SOFTCLOCK	1
     54  1.18.16.1  jmcneill #define	IPL_SOFTBIO	1
     55       1.16      yamt #define	IPL_SOFTNET	1
     56       1.16      yamt #define	IPL_SOFTSERIAL	1
     57  1.18.16.1  jmcneill #define	IPL_VM		2
     58  1.18.16.1  jmcneill #define	IPL_SCHED	3
     59  1.18.16.1  jmcneill #define	IPL_HIGH	4
     60  1.18.16.1  jmcneill #define	_NIPL		5
     61       1.16      yamt 
     62       1.16      yamt extern int ipl2spl_table[_NIPL];
     63       1.16      yamt 
     64       1.16      yamt typedef int ipl_t;
     65       1.16      yamt typedef struct {
     66       1.18   thorpej 	uint16_t _ipl;
     67       1.16      yamt } ipl_cookie_t;
     68       1.16      yamt 
     69       1.16      yamt static inline ipl_cookie_t
     70       1.16      yamt makeiplcookie(ipl_t ipl)
     71       1.16      yamt {
     72       1.16      yamt 
     73       1.16      yamt 	return (ipl_cookie_t){._ipl = ipl};
     74       1.16      yamt }
     75       1.16      yamt 
     76       1.16      yamt static inline int
     77       1.16      yamt splraiseipl(ipl_cookie_t icookie)
     78       1.16      yamt {
     79        1.9   aymeric 
     80       1.16      yamt 	return _splraise(ipl2spl_table[icookie._ipl]);
     81       1.16      yamt }
     82        1.2        is 
     83  1.18.16.1  jmcneill #ifdef _KERNEL_OPT
     84       1.13       chs #include "opt_lev6_defer.h"
     85       1.13       chs #endif
     86       1.13       chs 
     87       1.13       chs #define	spl0()			_spl0()	/* we have real software interrupts */
     88       1.13       chs #define splsoftclock()		splraise1()
     89       1.13       chs #define splsoftnet()		splraise1()
     90       1.16      yamt #define splsoftserial()		splraise1()
     91  1.18.16.1  jmcneill #define splsoftbio()		splraise1()
     92  1.18.16.1  jmcneill #define	splvm()			splraise4()
     93       1.13       chs 
     94       1.13       chs #ifndef _LKM
     95       1.13       chs 
     96       1.13       chs #ifndef LEV6_DEFER
     97  1.18.16.1  jmcneill #define splsched()	splraise6()
     98       1.13       chs #define splhigh()	spl7()
     99       1.13       chs #else
    100       1.13       chs #define splsched()	splraise4()
    101  1.18.16.1  jmcneill #define splhigh()	splraise4()
    102       1.13       chs #endif
    103       1.13       chs 
    104       1.13       chs #else	/* _LKM */
    105       1.13       chs 
    106       1.13       chs extern int _spllkm6(void);
    107       1.13       chs extern int _spllkm7(void);
    108       1.13       chs 
    109  1.18.16.1  jmcneill #define splsched()	_spllkm6()
    110       1.13       chs #define splhigh()	_spllkm7()
    111       1.13       chs 
    112       1.13       chs #endif /* _LKM */
    113       1.13       chs 
    114       1.13       chs #define splx(s)		_spl(s)
    115       1.13       chs 
    116       1.15   tsutsui #endif	/* !_AMIGA_INTR_H_ */
    117