]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blob - include/asm-x86/mach-default/irq_vectors.h
x86: convert to generic helpers for IPI function calls
[linux-2.6-omap-h63xx.git] / include / asm-x86 / mach-default / irq_vectors.h
1 /*
2  * This file should contain #defines for all of the interrupt vector
3  * numbers used by this architecture.
4  *
5  * In addition, there are some standard defines:
6  *
7  *      FIRST_EXTERNAL_VECTOR:
8  *              The first free place for external interrupts
9  *
10  *      SYSCALL_VECTOR:
11  *              The IRQ vector a syscall makes the user to kernel transition
12  *              under.
13  *
14  *      TIMER_IRQ:
15  *              The IRQ number the timer interrupt comes in at.
16  *
17  *      NR_IRQS:
18  *              The total number of interrupt vectors (including all the
19  *              architecture specific interrupts) needed.
20  *
21  */                     
22 #ifndef _ASM_IRQ_VECTORS_H
23 #define _ASM_IRQ_VECTORS_H
24
25 /*
26  * IDT vectors usable for external interrupt sources start
27  * at 0x20:
28  */
29 #define FIRST_EXTERNAL_VECTOR   0x20
30
31 #define SYSCALL_VECTOR          0x80
32
33 /*
34  * Vectors 0x20-0x2f are used for ISA interrupts.
35  */
36
37 /*
38  * Special IRQ vectors used by the SMP architecture, 0xf0-0xff
39  *
40  *  some of the following vectors are 'rare', they are merged
41  *  into a single vector (CALL_FUNCTION_VECTOR) to save vector space.
42  *  TLB, reschedule and local APIC vectors are performance-critical.
43  *
44  *  Vectors 0xf0-0xfa are free (reserved for future Linux use).
45  */
46 #define SPURIOUS_APIC_VECTOR    0xff
47 #define ERROR_APIC_VECTOR       0xfe
48 #define INVALIDATE_TLB_VECTOR   0xfd
49 #define RESCHEDULE_VECTOR       0xfc
50 #define CALL_FUNCTION_VECTOR    0xfb
51 #define CALL_FUNCTION_SINGLE_VECTOR     0xfa
52
53 #define THERMAL_APIC_VECTOR     0xf0
54 /*
55  * Local APIC timer IRQ vector is on a different priority level,
56  * to work around the 'lost local interrupt if more than 2 IRQ
57  * sources per level' errata.
58  */
59 #define LOCAL_TIMER_VECTOR      0xef
60
61 /*
62  * First APIC vector available to drivers: (vectors 0x30-0xee)
63  * we start at 0x31 to spread out vectors evenly between priority
64  * levels. (0x80 is the syscall vector)
65  */
66 #define FIRST_DEVICE_VECTOR     0x31
67 #define FIRST_SYSTEM_VECTOR     0xef
68
69 #define TIMER_IRQ 0
70
71 /*
72  * 16 8259A IRQ's, 208 potential APIC interrupt sources.
73  * Right now the APIC is mostly only used for SMP.
74  * 256 vectors is an architectural limit. (we can have
75  * more than 256 devices theoretically, but they will
76  * have to use shared interrupts)
77  * Since vectors 0x00-0x1f are used/reserved for the CPU,
78  * the usable vector space is 0x20-0xff (224 vectors)
79  */
80
81 /*
82  * The maximum number of vectors supported by i386 processors
83  * is limited to 256. For processors other than i386, NR_VECTORS
84  * should be changed accordingly.
85  */
86 #define NR_VECTORS 256
87
88 #include "irq_vectors_limits.h"
89
90 #define FPU_IRQ                 13
91
92 #define FIRST_VM86_IRQ          3
93 #define LAST_VM86_IRQ           15
94 #define invalid_vm86_irq(irq)   ((irq) < 3 || (irq) > 15)
95
96
97 #endif /* _ASM_IRQ_VECTORS_H */