summaryrefslogtreecommitdiffstats
path: root/include/asm-mips/dec/interrupts.h
blob: 9df1105258e66e9600bcba036767cb9f47b5326c (plain)
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
85
86
/*  
 * 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	intr_halt(void);

extern void	asic_intr_unimplemented(void);

#endif
#endif