* Copyright (c) 1990 The Regents of the University of California.
* This code is derived from software contributed to Berkeley by
* %sccs.include.redist.c%
* @(#)icu.h 5.9 (Berkeley) %G%
* Interrupt "level" mechanism variables, masks, and macros
extern unsigned short imen
; /* interrupt mask enable */
extern unsigned short cpl
; /* current priority level mask */
extern unsigned short highmask
; /* group of interrupts masked with splhigh() */
extern unsigned short ttymask
; /* group of interrupts masked with spltty() */
extern unsigned short biomask
; /* group of interrupts masked with splbio() */
extern unsigned short netmask
; /* group of interrupts masked with splimp() */
#define INTREN(s) imen &= ~(s)
#define INTRDIS(s) imen |= (s)
#define INTRMASK(msk,s) msk |= (s)
* Macro's for interrupt level priority masks (used in interrupt vector entry)
/* Mask a group of interrupts atomically */
#define INTR_HEAD(unit,mask,offst) \
#define INTR_TAIL(unit,mask,offst) \
incl _isa_intr + offst * 4 ; \
#define INTR1(unit,mask,offst) \
INTR_HEAD(unit,mask,offst) \
INTR_TAIL(unit,mask,offst)
#define INTR2(unit,mask,offst) \
INTR_HEAD(unit,mask,offst) \
INTR_TAIL(unit,mask,offst)
/* Interrupt vector exit macros */
/* First eight interrupts (ICU1) */
/* Second eight interrupts (ICU2) */
* Interrupt enable bits -- in order of priority
#define IRQ0 0x0001 /* highest priority - timer */
#define IRQ7 0x0080 /* lowest - parallel printer */
* Interrupt Control offset into Interrupt descriptor table (IDT)
#define ICU_OFFSET 32 /* 0-31 are processor exceptions */
#define ICU_LEN 16 /* 32-47 are ISA interrupts */