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