| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | #ifndef _ASM_IRQ_H | 
 | 2 | #define _ASM_IRQ_H | 
 | 3 |  | 
 | 4 | /* | 
 | 5 |  *	linux/include/asm/irq.h | 
 | 6 |  * | 
 | 7 |  *	(C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar | 
 | 8 |  * | 
 | 9 |  *	IRQ/IPI changes taken from work by Thomas Radke | 
 | 10 |  *	<tomsoft@informatik.tu-chemnitz.de> | 
 | 11 |  */ | 
 | 12 |  | 
 | 13 | #define TIMER_IRQ 0 | 
 | 14 |  | 
 | 15 | /* | 
 | 16 |  * 16 8259A IRQ's, 208 potential APIC interrupt sources. | 
 | 17 |  * Right now the APIC is mostly only used for SMP. | 
 | 18 |  * 256 vectors is an architectural limit. (we can have | 
 | 19 |  * more than 256 devices theoretically, but they will | 
 | 20 |  * have to use shared interrupts) | 
 | 21 |  * Since vectors 0x00-0x1f are used/reserved for the CPU, | 
 | 22 |  * the usable vector space is 0x20-0xff (224 vectors) | 
 | 23 |  */ | 
 | 24 |  | 
 | 25 | /* | 
 | 26 |  * The maximum number of vectors supported by x86_64 processors | 
 | 27 |  * is limited to 256. For processors other than x86_64, NR_VECTORS | 
 | 28 |  * should be changed accordingly. | 
 | 29 |  */ | 
 | 30 | #define NR_VECTORS 256 | 
 | 31 |  | 
 | 32 | #define FIRST_SYSTEM_VECTOR	0xef   /* duplicated in hw_irq.h */ | 
 | 33 |  | 
 | 34 | #ifdef CONFIG_PCI_MSI | 
 | 35 | #define NR_IRQS FIRST_SYSTEM_VECTOR | 
 | 36 | #define NR_IRQ_VECTORS NR_IRQS | 
 | 37 | #else | 
 | 38 | #define NR_IRQS 224 | 
 | 39 | #define NR_IRQ_VECTORS 1024 | 
 | 40 | #endif | 
 | 41 |  | 
 | 42 | static __inline__ int irq_canonicalize(int irq) | 
 | 43 | { | 
 | 44 | 	return ((irq == 2) ? 9 : irq); | 
 | 45 | } | 
 | 46 |  | 
 | 47 | #ifdef CONFIG_X86_LOCAL_APIC | 
 | 48 | #define ARCH_HAS_NMI_WATCHDOG		/* See include/linux/nmi.h */ | 
 | 49 | #endif | 
 | 50 |  | 
 | 51 | struct irqaction; | 
 | 52 | struct pt_regs; | 
 | 53 | int handle_IRQ_event(unsigned int, struct pt_regs *, struct irqaction *); | 
 | 54 |  | 
 | 55 | #endif /* _ASM_IRQ_H */ |