📄 spl.h
字号:
/* * File: spl.h * Author: Avadis Tevanian, Jr. * * Define inline macros for spl routines. * * HISTORY * * 14-May-90 Gregg Kellogg (gk) at NeXT * Changed SPLCLOCK from 6 to 3, as much scheduling code expects * splclock() == splsched(). Added splusclock(). * * 19-Jun-89 Mike DeMoney (mike) at NeXT * Modified to allow spl assertions in spl_measured.h */#ifndef _KERNSERV_M68K_SPL_H_#define _KERNSERV_M68K_SPL_H_#ifdef KERNEL_BUILD#import <iplmeas.h>#else KERNEL_BUILD/* #import <mach/features.h> */#endif KERNEL_BUILD#import <bsd/m68k/psl.h>#if NIPLMEAS && !defined(NO_IPLMEAS)#import <machdep/m68k/spl_measured.h>#endif NIPLMEAS && !defined(NO_IPLMEAS)#ifndef SPLU_MACRO#ifdef ASSEMBLER#define SPLU_MACRO(ipl) \ movw sr,d0; \ movw \#((ipl)*256 + 0x2000),sr;#define splx(nsr) \ movw sr,d0; \ movw nsr,sr;#else ASSEMBLER#define SPLU_MACRO(x) \({ register short ret; \ asm volatile ("movw sr,%0" : "=dm" (ret)); \ asm volatile ("movw %1,sr" : "=m" (*(char *)0): "Jdm" ((short)(x)*256+0x2000)); \ ret; \})#define splx(x) \({ register short ret; \ asm volatile ("movw sr,%0" : "=dm" (ret)); \ asm volatile ("movw %1,sr" : "=m" (*(char *)0): "Jdm" ((short)x)); \ ret; \})#endif ASSEMBLER#define SPLD_MACRO(ipl) SPLU_MACRO(ipl)#define spln(x) splx(x)#endif SPLU_MACRO#define ipltospl(ipl) (SR_SUPER | ((ipl) << 8))/* * Define spls as the usual numbers (which should never be used * directly. */#define spl0() SPLD_MACRO(0)#define spl1() SPLU_MACRO(1)#define spl2() SPLU_MACRO(2)#define spl3() SPLU_MACRO(3)#define spl4() SPLU_MACRO(4)#define spl5() SPLU_MACRO(5)#define spl6() SPLU_MACRO(6)#define spl7() SPLU_MACRO(7)/* * Define spl mnemonics. */#define IPLHIGH 7#define IPLDMA 6#define IPLUSCLOCK 6#define IPLSCC 5#define IPLCLOCK 3#define IPLBIO 3#define IPLSCHED 3#define IPLIMP 3#define IPLVM 3#define IPLNET 2#define IPLTTY 1#define IPLSOFTCLOCK 1#define splhigh() SPLU_MACRO(IPLHIGH)#define splusclock() SPLU_MACRO(IPLUSCLOCK)#define spldma() SPLU_MACRO(IPLDMA)#define splscc() SPLU_MACRO(IPLSCC)#define splclock() SPLU_MACRO(IPLCLOCK)#define splbio() SPLU_MACRO(IPLBIO)#define splsched() SPLU_MACRO(IPLSCHED)#define splimp() SPLU_MACRO(IPLIMP)#define splvm() SPLU_MACRO(IPLVM)#define splnet() SPLU_MACRO(IPLNET)#define spltty() SPLU_MACRO(IPLTTY)#define splsoftclock() SPLU_MACRO(IPLSOFTCLOCK)#endif _KERNSERV_M68K_SPL_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -