diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-x86/hw_irq.h | 81 | ||||
-rw-r--r-- | include/asm-x86/hw_irq_32.h | 61 | ||||
-rw-r--r-- | include/asm-x86/hw_irq_64.h | 68 |
3 files changed, 81 insertions, 129 deletions
diff --git a/include/asm-x86/hw_irq.h b/include/asm-x86/hw_irq.h index bf025399d939..38af08ed43cf 100644 --- a/include/asm-x86/hw_irq.h +++ b/include/asm-x86/hw_irq.h | |||
@@ -1,5 +1,86 @@ | |||
1 | #ifndef _ASM_HW_IRQ_H | ||
2 | #define _ASM_HW_IRQ_H | ||
3 | |||
4 | /* | ||
5 | * (C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar | ||
6 | * | ||
7 | * moved some of the old arch/i386/kernel/irq.h to here. VY | ||
8 | * | ||
9 | * IRQ/IPI changes taken from work by Thomas Radke | ||
10 | * <tomsoft@informatik.tu-chemnitz.de> | ||
11 | * | ||
12 | * hacked by Andi Kleen for x86-64. | ||
13 | * unified by tglx | ||
14 | */ | ||
15 | |||
16 | #define NMI_VECTOR 0x02 | ||
17 | |||
18 | #ifndef __ASSEMBLY__ | ||
19 | |||
20 | #include <linux/percpu.h> | ||
21 | #include <linux/profile.h> | ||
22 | #include <linux/smp.h> | ||
23 | |||
24 | #include <asm/atomic.h> | ||
25 | #include <asm/irq.h> | ||
26 | #include <asm/sections.h> | ||
27 | |||
28 | #define platform_legacy_irq(irq) ((irq) < 16) | ||
29 | |||
30 | /* Interrupt handlers registered during init_IRQ */ | ||
31 | extern void apic_timer_interrupt(void); | ||
32 | extern void error_interrupt(void); | ||
33 | extern void spurious_interrupt(void); | ||
34 | extern void thermal_interrupt(void); | ||
35 | extern void reschedule_interrupt(void); | ||
36 | |||
37 | extern void invalidate_interrupt(void); | ||
38 | extern void invalidate_interrupt0(void); | ||
39 | extern void invalidate_interrupt1(void); | ||
40 | extern void invalidate_interrupt2(void); | ||
41 | extern void invalidate_interrupt3(void); | ||
42 | extern void invalidate_interrupt4(void); | ||
43 | extern void invalidate_interrupt5(void); | ||
44 | extern void invalidate_interrupt6(void); | ||
45 | extern void invalidate_interrupt7(void); | ||
46 | |||
47 | extern void irq_move_cleanup_interrupt(void); | ||
48 | extern void threshold_interrupt(void); | ||
49 | |||
50 | extern void call_function_interrupt(void); | ||
51 | |||
52 | /* PIC specific functions */ | ||
53 | extern void disable_8259A_irq(unsigned int irq); | ||
54 | extern void enable_8259A_irq(unsigned int irq); | ||
55 | extern int i8259A_irq_pending(unsigned int irq); | ||
56 | extern void make_8259A_irq(unsigned int irq); | ||
57 | extern void init_8259A(int aeoi); | ||
58 | |||
59 | /* IOAPIC */ | ||
60 | #define IO_APIC_IRQ(x) (((x) >= 16) || ((1<<(x)) & io_apic_irqs)) | ||
61 | extern unsigned long io_apic_irqs; | ||
62 | |||
63 | extern void init_VISWS_APIC_irqs(void); | ||
64 | extern void setup_IO_APIC(void); | ||
65 | extern void disable_IO_APIC(void); | ||
66 | extern void print_IO_APIC(void); | ||
67 | extern int IO_APIC_get_PCI_irq_vector(int bus, int slot, int fn); | ||
68 | extern void setup_ioapic_dest(void); | ||
69 | |||
70 | /* IPI functions */ | ||
71 | extern void send_IPI_self(int vector); | ||
72 | extern void send_IPI(int dest, int vector); | ||
73 | |||
74 | /* Statistics */ | ||
75 | extern atomic_t irq_err_count; | ||
76 | extern atomic_t irq_mis_count; | ||
77 | |||
78 | #endif /* !ASSEMBLY_ */ | ||
79 | |||
1 | #ifdef CONFIG_X86_32 | 80 | #ifdef CONFIG_X86_32 |
2 | # include "hw_irq_32.h" | 81 | # include "hw_irq_32.h" |
3 | #else | 82 | #else |
4 | # include "hw_irq_64.h" | 83 | # include "hw_irq_64.h" |
5 | #endif | 84 | #endif |
85 | |||
86 | #endif | ||
diff --git a/include/asm-x86/hw_irq_32.h b/include/asm-x86/hw_irq_32.h index ea88054e03f3..89fca5af5958 100644 --- a/include/asm-x86/hw_irq_32.h +++ b/include/asm-x86/hw_irq_32.h | |||
@@ -1,66 +1,5 @@ | |||
1 | #ifndef _ASM_HW_IRQ_H | ||
2 | #define _ASM_HW_IRQ_H | ||
3 | |||
4 | /* | ||
5 | * linux/include/asm/hw_irq.h | ||
6 | * | ||
7 | * (C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar | ||
8 | * | ||
9 | * moved some of the old arch/i386/kernel/irq.h to here. VY | ||
10 | * | ||
11 | * IRQ/IPI changes taken from work by Thomas Radke | ||
12 | * <tomsoft@informatik.tu-chemnitz.de> | ||
13 | */ | ||
14 | |||
15 | #include <linux/profile.h> | ||
16 | #include <asm/atomic.h> | ||
17 | #include <asm/irq.h> | ||
18 | #include <asm/sections.h> | ||
19 | |||
20 | #define NMI_VECTOR 0x02 | ||
21 | |||
22 | /* | ||
23 | * Various low-level irq details needed by irq.c, process.c, | ||
24 | * time.c, io_apic.c and smp.c | ||
25 | * | ||
26 | * Interrupt entry/exit code at both C and assembly level | ||
27 | */ | ||
28 | 1 | ||
29 | extern void (*const interrupt[NR_IRQS])(void); | 2 | extern void (*const interrupt[NR_IRQS])(void); |
30 | 3 | ||
31 | #ifdef CONFIG_SMP | ||
32 | void reschedule_interrupt(void); | ||
33 | void invalidate_interrupt(void); | ||
34 | void call_function_interrupt(void); | ||
35 | #endif | ||
36 | |||
37 | #ifdef CONFIG_X86_LOCAL_APIC | ||
38 | void apic_timer_interrupt(void); | ||
39 | void error_interrupt(void); | ||
40 | void spurious_interrupt(void); | ||
41 | void thermal_interrupt(void); | ||
42 | #define platform_legacy_irq(irq) ((irq) < 16) | ||
43 | #endif | ||
44 | |||
45 | void disable_8259A_irq(unsigned int irq); | ||
46 | void enable_8259A_irq(unsigned int irq); | ||
47 | int i8259A_irq_pending(unsigned int irq); | ||
48 | void make_8259A_irq(unsigned int irq); | ||
49 | void init_8259A(int aeoi); | ||
50 | void send_IPI_self(int vector); | ||
51 | void init_VISWS_APIC_irqs(void); | ||
52 | void setup_IO_APIC(void); | ||
53 | void disable_IO_APIC(void); | ||
54 | void print_IO_APIC(void); | ||
55 | int IO_APIC_get_PCI_irq_vector(int bus, int slot, int fn); | ||
56 | void send_IPI(int dest, int vector); | ||
57 | void setup_ioapic_dest(void); | ||
58 | |||
59 | extern unsigned long io_apic_irqs; | ||
60 | |||
61 | extern atomic_t irq_err_count; | ||
62 | extern atomic_t irq_mis_count; | ||
63 | 4 | ||
64 | #define IO_APIC_IRQ(x) (((x) >= 16) || ((1<<(x)) & io_apic_irqs)) | ||
65 | 5 | ||
66 | #endif /* _ASM_HW_IRQ_H */ | ||
diff --git a/include/asm-x86/hw_irq_64.h b/include/asm-x86/hw_irq_64.h index 0062ef390f67..28674576e9fe 100644 --- a/include/asm-x86/hw_irq_64.h +++ b/include/asm-x86/hw_irq_64.h | |||
@@ -1,28 +1,3 @@ | |||
1 | #ifndef _ASM_HW_IRQ_H | ||
2 | #define _ASM_HW_IRQ_H | ||
3 | |||
4 | /* | ||
5 | * linux/include/asm/hw_irq.h | ||
6 | * | ||
7 | * (C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar | ||
8 | * | ||
9 | * moved some of the old arch/i386/kernel/irq.h to here. VY | ||
10 | * | ||
11 | * IRQ/IPI changes taken from work by Thomas Radke | ||
12 | * <tomsoft@informatik.tu-chemnitz.de> | ||
13 | * | ||
14 | * hacked by Andi Kleen for x86-64. | ||
15 | */ | ||
16 | |||
17 | #ifndef __ASSEMBLY__ | ||
18 | #include <asm/atomic.h> | ||
19 | #include <asm/irq.h> | ||
20 | #include <linux/profile.h> | ||
21 | #include <linux/smp.h> | ||
22 | #include <linux/percpu.h> | ||
23 | #endif | ||
24 | |||
25 | #define NMI_VECTOR 0x02 | ||
26 | /* | 1 | /* |
27 | * IDT vectors usable for external interrupt sources start | 2 | * IDT vectors usable for external interrupt sources start |
28 | * at 0x20: | 3 | * at 0x20: |
@@ -96,25 +71,6 @@ | |||
96 | 71 | ||
97 | #ifndef __ASSEMBLY__ | 72 | #ifndef __ASSEMBLY__ |
98 | 73 | ||
99 | /* Interrupt handlers registered during init_IRQ */ | ||
100 | void apic_timer_interrupt(void); | ||
101 | void spurious_interrupt(void); | ||
102 | void error_interrupt(void); | ||
103 | void reschedule_interrupt(void); | ||
104 | void call_function_interrupt(void); | ||
105 | void irq_move_cleanup_interrupt(void); | ||
106 | void invalidate_interrupt0(void); | ||
107 | void invalidate_interrupt1(void); | ||
108 | void invalidate_interrupt2(void); | ||
109 | void invalidate_interrupt3(void); | ||
110 | void invalidate_interrupt4(void); | ||
111 | void invalidate_interrupt5(void); | ||
112 | void invalidate_interrupt6(void); | ||
113 | void invalidate_interrupt7(void); | ||
114 | void thermal_interrupt(void); | ||
115 | void threshold_interrupt(void); | ||
116 | void i8254_timer_resume(void); | ||
117 | |||
118 | typedef int vector_irq_t[NR_VECTORS]; | 74 | typedef int vector_irq_t[NR_VECTORS]; |
119 | DECLARE_PER_CPU(vector_irq_t, vector_irq); | 75 | DECLARE_PER_CPU(vector_irq_t, vector_irq); |
120 | extern void __setup_vector_irq(int cpu); | 76 | extern void __setup_vector_irq(int cpu); |
@@ -127,29 +83,9 @@ extern spinlock_t vector_lock; | |||
127 | * Interrupt entry/exit code at both C and assembly level | 83 | * Interrupt entry/exit code at both C and assembly level |
128 | */ | 84 | */ |
129 | 85 | ||
130 | extern void disable_8259A_irq(unsigned int irq); | ||
131 | extern void enable_8259A_irq(unsigned int irq); | ||
132 | extern int i8259A_irq_pending(unsigned int irq); | ||
133 | extern void make_8259A_irq(unsigned int irq); | ||
134 | extern void init_8259A(int aeoi); | ||
135 | extern void send_IPI_self(int vector); | ||
136 | extern void init_VISWS_APIC_irqs(void); | ||
137 | extern void setup_IO_APIC(void); | ||
138 | extern void enable_IO_APIC(void); | 86 | extern void enable_IO_APIC(void); |
139 | extern void disable_IO_APIC(void); | ||
140 | extern void print_IO_APIC(void); | ||
141 | extern int IO_APIC_get_PCI_irq_vector(int bus, int slot, int fn); | ||
142 | extern void send_IPI(int dest, int vector); | ||
143 | extern void setup_ioapic_dest(void); | ||
144 | extern void native_init_IRQ(void); | 87 | extern void native_init_IRQ(void); |
145 | 88 | ||
146 | extern unsigned long io_apic_irqs; | ||
147 | |||
148 | extern atomic_t irq_err_count; | ||
149 | extern atomic_t irq_mis_count; | ||
150 | |||
151 | #define IO_APIC_IRQ(x) (((x) >= 16) || ((1<<(x)) & io_apic_irqs)) | ||
152 | |||
153 | #include <asm/ptrace.h> | 89 | #include <asm/ptrace.h> |
154 | 90 | ||
155 | #define IRQ_NAME2(nr) nr##_interrupt(void) | 91 | #define IRQ_NAME2(nr) nr##_interrupt(void) |
@@ -166,8 +102,4 @@ extern atomic_t irq_mis_count; | |||
166 | "push $~(" #nr ") ; " \ | 102 | "push $~(" #nr ") ; " \ |
167 | "jmp common_interrupt"); | 103 | "jmp common_interrupt"); |
168 | 104 | ||
169 | #define platform_legacy_irq(irq) ((irq) < 16) | ||
170 | |||
171 | #endif | 105 | #endif |
172 | |||
173 | #endif /* _ASM_HW_IRQ_H */ | ||