1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
/*
* 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
/*
* 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 FPU 9
#define HALT 10
#define NR_INTS 11
#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 dec_intr_fpu(void);
extern void dec_intr_rtc(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
|