psl.h revision 1.16
11.16Smatt/*	$NetBSD: psl.h,v 1.16 2008/04/27 18:58:44 matt Exp $	*/
21.1Sreinoud
31.1Sreinoud/*
41.1Sreinoud * Copyright (c) 1995 Mark Brinicombe.
51.1Sreinoud * All rights reserved.
61.1Sreinoud *
71.1Sreinoud * Redistribution and use in source and binary forms, with or without
81.1Sreinoud * modification, are permitted provided that the following conditions
91.1Sreinoud * are met:
101.1Sreinoud * 1. Redistributions of source code must retain the above copyright
111.1Sreinoud *    notice, this list of conditions and the following disclaimer.
121.1Sreinoud * 2. Redistributions in binary form must reproduce the above copyright
131.1Sreinoud *    notice, this list of conditions and the following disclaimer in the
141.1Sreinoud *    documentation and/or other materials provided with the distribution.
151.1Sreinoud * 3. All advertising materials mentioning features or use of this software
161.1Sreinoud *    must display the following acknowledgement:
171.1Sreinoud *	This product includes software developed by Mark Brinicombe
181.1Sreinoud *	for the NetBSD Project.
191.1Sreinoud * 4. The name of the company nor the name of the author may be used to
201.1Sreinoud *    endorse or promote products derived from this software without specific
211.1Sreinoud *    prior written permission.
221.1Sreinoud *
231.1Sreinoud * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
241.1Sreinoud * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
251.1Sreinoud * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
261.1Sreinoud * IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
271.1Sreinoud * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
281.1Sreinoud * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
291.1Sreinoud * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
301.1Sreinoud * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
311.1Sreinoud * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
321.1Sreinoud * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
331.1Sreinoud * SUCH DAMAGE.
341.1Sreinoud *
351.1Sreinoud * RiscBSD kernel project
361.1Sreinoud *
371.1Sreinoud * psl.h
381.1Sreinoud *
391.1Sreinoud * spl prototypes.
401.1Sreinoud * Eventually this will become a set of defines.
411.1Sreinoud *
421.1Sreinoud * Created      : 21/07/95
431.1Sreinoud */
441.1Sreinoud
451.4Sbjh21#ifndef _ARM_PSL_H_
461.4Sbjh21#define _ARM_PSL_H_
471.1Sreinoud#include <machine/intr.h>
481.1Sreinoud
491.1Sreinoud/*
501.1Sreinoud * These are the different SPL states
511.1Sreinoud *
521.1Sreinoud * Each state has an interrupt mask associated with it which
531.1Sreinoud * indicate which interrupts are allowed.
541.1Sreinoud */
551.1Sreinoud
561.16Smatt#define spl0()		splx(IPL_NONE)
571.15Smatt#ifdef __HAVE_FAST_SOFTINTS
581.16Smatt#define splsoftclock()	raisespl(IPL_SOFTCLOCK)
591.16Smatt#define splsoftbio()	raisespl(IPL_SOFTBIO)
601.16Smatt#define splsoftnet()	raisespl(IPL_SOFTNET)
611.16Smatt#define splsoftserial()	raisespl(IPL_SOFTSERIAL)
621.15Smatt#else
631.15Smatt#define splsoftclock()	spl0()
641.15Smatt#define splsoftbio()	spl0()
651.15Smatt#define splsoftnet()	spl0()
661.15Smatt#define splsoftserial()	spl0()
671.15Smatt#endif
681.16Smatt#define splvm()		raisespl(IPL_VM)
691.16Smatt#define splsched()	raisespl(IPL_SCHED)
701.16Smatt#define splhigh()	raisespl(IPL_HIGH)
711.1Sreinoud
721.1Sreinoud#ifdef _KERNEL
731.1Sreinoud#ifndef _LOCORE
741.15Smattint raisespl	(int);
751.15Smattint lowerspl	(int);
761.15Smattint splx	(int);
771.1Sreinoud
781.15Smatt#ifdef __HAVE_FAST_SOFTINTS
791.8Smattvoid _setsoftintr	(int si);
801.15Smatt#endif
811.1Sreinoud
821.10Sthorpejtypedef uint8_t ipl_t;
831.7Syamttypedef struct {
841.16Smatt	uint8_t _ipl;
851.7Syamt} ipl_cookie_t;
861.7Syamt
871.7Syamtstatic inline ipl_cookie_t
881.7Syamtmakeiplcookie(ipl_t ipl)
891.7Syamt{
901.7Syamt
911.16Smatt	return (ipl_cookie_t){._ipl = (uint8_t)ipl};
921.7Syamt}
931.7Syamt
941.7Syamtstatic inline int
951.7Syamtsplraiseipl(ipl_cookie_t icookie)
961.7Syamt{
971.7Syamt
981.16Smatt	return raisespl(icookie._ipl);
991.7Syamt}
1001.1Sreinoud#endif /* _LOCORE */
1011.1Sreinoud#endif /* _KERNEL */
1021.1Sreinoud
1031.4Sbjh21#endif /* _ARM_PSL_H_ */
1041.1Sreinoud/* End of psl.h */
105