diff options
Diffstat (limited to 'include/asm-x86/hw_irq.h')
-rw-r--r-- | include/asm-x86/hw_irq.h | 105 |
1 files changed, 103 insertions, 2 deletions
diff --git a/include/asm-x86/hw_irq.h b/include/asm-x86/hw_irq.h index bf025399d939..18f067c310f7 100644 --- a/include/asm-x86/hw_irq.h +++ b/include/asm-x86/hw_irq.h | |||
@@ -1,5 +1,106 @@ | |||
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 | #include <asm/irq_vectors.h> | ||
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 | #ifdef CONFIG_X86_64 | ||
71 | extern void enable_IO_APIC(void); | ||
72 | #endif | ||
73 | |||
74 | /* IPI functions */ | ||
75 | extern void send_IPI_self(int vector); | ||
76 | extern void send_IPI(int dest, int vector); | ||
77 | |||
78 | /* Statistics */ | ||
79 | extern atomic_t irq_err_count; | ||
80 | extern atomic_t irq_mis_count; | ||
81 | |||
82 | /* EISA */ | ||
83 | extern void eisa_set_level_irq(unsigned int irq); | ||
84 | |||
85 | /* Voyager functions */ | ||
86 | extern asmlinkage void vic_cpi_interrupt(void); | ||
87 | extern asmlinkage void vic_sys_interrupt(void); | ||
88 | extern asmlinkage void vic_cmn_interrupt(void); | ||
89 | extern asmlinkage void qic_timer_interrupt(void); | ||
90 | extern asmlinkage void qic_invalidate_interrupt(void); | ||
91 | extern asmlinkage void qic_reschedule_interrupt(void); | ||
92 | extern asmlinkage void qic_enable_irq_interrupt(void); | ||
93 | extern asmlinkage void qic_call_function_interrupt(void); | ||
94 | |||
1 | #ifdef CONFIG_X86_32 | 95 | #ifdef CONFIG_X86_32 |
2 | # include "hw_irq_32.h" | 96 | extern void (*const interrupt[NR_IRQS])(void); |
3 | #else | 97 | #else |
4 | # include "hw_irq_64.h" | 98 | typedef int vector_irq_t[NR_VECTORS]; |
99 | DECLARE_PER_CPU(vector_irq_t, vector_irq); | ||
100 | extern spinlock_t vector_lock; | ||
101 | #endif | ||
102 | extern void setup_vector_irq(int cpu); | ||
103 | |||
104 | #endif /* !ASSEMBLY_ */ | ||
105 | |||
5 | #endif | 106 | #endif |