/* * Miscellaneous definitions used to initialise the interrupt vector table * with the machine-specific interrupt routines. * * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 1997 by Paul M. Antoine. * reworked 1998 by Harald Koerfgen. */ #ifndef __ASM_DEC_INTERRUPTS_H #define __ASM_DEC_INTERRUPTS_H #include /* * DECstation Interrupts */ /* * This list reflects the priority of the Interrupts. * Exception: on kmins we have to handle Memory Error * Interrupts before the TC Interrupts. */ #define CLOCK 0 #define SCSI_DMA_INT 1 #define SCSI_INT 2 #define ETHER 3 #define SERIAL 4 #define TC0 5 #define TC1 6 #define TC2 7 #define MEMORY 8 #define HALT 9 #define NR_INTS 10 /* * The FPU is special. It must always be handled first. * Since it bypasses the regular IRQ handler we define * the line it uses here. All DECstations use the same * one. */ #define DEC_IE_FPU IE_IRQ5 #ifndef __ASSEMBLY__ /* * Data structure to hide the differences between the DECstation Interrupts * * If asic_mask == NULL, the interrupt is directly handled by the CPU. * Otherwise this Interrupt is handled the IRQ Controller. */ typedef struct { unsigned int cpu_mask; /* checking and enabling interrupts in CP0 */ unsigned int iemask; /* enabling interrupts in IRQ Controller */ } decint_t; extern volatile unsigned int *isr; /* address of the interrupt status register */ extern volatile unsigned int *imr; /* address of the interrupt mask register */ extern decint_t dec_interrupt[NR_INTS]; /* * Interrupt table structure to hide differences between different * systems such. */ extern void *cpu_ivec_tbl[8]; extern long cpu_mask_tbl[8]; extern long cpu_irq_nr[8]; extern long asic_irq_nr[32]; extern long asic_mask_tbl[32]; /* * Common interrupt routine prototypes for all DECStations */ extern void dec_intr_unimplemented(void); extern void kn02_io_int(void); extern void kn02xa_io_int(void); extern void kn03_io_int(void); extern void asic_intr_unimplemented(void); #endif #endif