]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
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 | |
5580ecee | 39 | #define NR_IRQ_VECTORS (32 * NR_CPUS) |
1da177e4 LT |
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 | ||
76e4f660 AR |
51 | #ifdef CONFIG_HOTPLUG_CPU |
52 | #include <linux/cpumask.h> | |
53 | extern void fixup_irqs(cpumask_t map); | |
54 | #endif | |
55 | ||
ed6b676c AK |
56 | #define __ARCH_HAS_DO_SOFTIRQ 1 |
57 | ||
1da177e4 | 58 | #endif /* _ASM_IRQ_H */ |