diff options
Diffstat (limited to 'include/asm-x86/hw_irq.h')
-rw-r--r-- | include/asm-x86/hw_irq.h | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/include/asm-x86/hw_irq.h b/include/asm-x86/hw_irq.h index 77ba51df5668..50f6e0316b50 100644 --- a/include/asm-x86/hw_irq.h +++ b/include/asm-x86/hw_irq.h | |||
@@ -1,5 +1,5 @@ | |||
1 | #ifndef _ASM_HW_IRQ_H | 1 | #ifndef ASM_X86__HW_IRQ_H |
2 | #define _ASM_HW_IRQ_H | 2 | #define ASM_X86__HW_IRQ_H |
3 | 3 | ||
4 | /* | 4 | /* |
5 | * (C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar | 5 | * (C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar |
@@ -64,7 +64,6 @@ extern unsigned long io_apic_irqs; | |||
64 | extern void init_VISWS_APIC_irqs(void); | 64 | extern void init_VISWS_APIC_irqs(void); |
65 | extern void setup_IO_APIC(void); | 65 | extern void setup_IO_APIC(void); |
66 | extern void disable_IO_APIC(void); | 66 | extern void disable_IO_APIC(void); |
67 | extern void print_IO_APIC(void); | ||
68 | extern int IO_APIC_get_PCI_irq_vector(int bus, int slot, int fn); | 67 | extern int IO_APIC_get_PCI_irq_vector(int bus, int slot, int fn); |
69 | extern void setup_ioapic_dest(void); | 68 | extern void setup_ioapic_dest(void); |
70 | 69 | ||
@@ -73,7 +72,9 @@ extern void enable_IO_APIC(void); | |||
73 | #endif | 72 | #endif |
74 | 73 | ||
75 | /* IPI functions */ | 74 | /* IPI functions */ |
75 | #ifdef CONFIG_X86_32 | ||
76 | extern void send_IPI_self(int vector); | 76 | extern void send_IPI_self(int vector); |
77 | #endif | ||
77 | extern void send_IPI(int dest, int vector); | 78 | extern void send_IPI(int dest, int vector); |
78 | 79 | ||
79 | /* Statistics */ | 80 | /* Statistics */ |
@@ -93,15 +94,43 @@ extern asmlinkage void qic_reschedule_interrupt(void); | |||
93 | extern asmlinkage void qic_enable_irq_interrupt(void); | 94 | extern asmlinkage void qic_enable_irq_interrupt(void); |
94 | extern asmlinkage void qic_call_function_interrupt(void); | 95 | extern asmlinkage void qic_call_function_interrupt(void); |
95 | 96 | ||
97 | /* SMP */ | ||
98 | extern void smp_apic_timer_interrupt(struct pt_regs *); | ||
99 | #ifdef CONFIG_X86_32 | ||
100 | extern void smp_spurious_interrupt(struct pt_regs *); | ||
101 | extern void smp_error_interrupt(struct pt_regs *); | ||
102 | #else | ||
103 | extern asmlinkage void smp_spurious_interrupt(void); | ||
104 | extern asmlinkage void smp_error_interrupt(void); | ||
105 | #endif | ||
106 | #ifdef CONFIG_X86_SMP | ||
107 | extern void smp_reschedule_interrupt(struct pt_regs *); | ||
108 | extern void smp_call_function_interrupt(struct pt_regs *); | ||
109 | extern void smp_call_function_single_interrupt(struct pt_regs *); | ||
110 | #ifdef CONFIG_X86_32 | ||
111 | extern void smp_invalidate_interrupt(struct pt_regs *); | ||
112 | #else | ||
113 | extern asmlinkage void smp_invalidate_interrupt(struct pt_regs *); | ||
114 | #endif | ||
115 | #endif | ||
116 | |||
96 | #ifdef CONFIG_X86_32 | 117 | #ifdef CONFIG_X86_32 |
97 | extern void (*const interrupt[NR_IRQS])(void); | 118 | extern void (*const interrupt[NR_IRQS])(void); |
98 | #else | 119 | #else |
99 | typedef int vector_irq_t[NR_VECTORS]; | 120 | typedef int vector_irq_t[NR_VECTORS]; |
100 | DECLARE_PER_CPU(vector_irq_t, vector_irq); | 121 | DECLARE_PER_CPU(vector_irq_t, vector_irq); |
101 | extern spinlock_t vector_lock; | ||
102 | #endif | 122 | #endif |
103 | extern void setup_vector_irq(int cpu); | 123 | |
124 | #if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_X86_64) | ||
125 | extern void lock_vector_lock(void); | ||
126 | extern void unlock_vector_lock(void); | ||
127 | extern void __setup_vector_irq(int cpu); | ||
128 | #else | ||
129 | static inline void lock_vector_lock(void) {} | ||
130 | static inline void unlock_vector_lock(void) {} | ||
131 | static inline void __setup_vector_irq(int cpu) {} | ||
132 | #endif | ||
104 | 133 | ||
105 | #endif /* !ASSEMBLY_ */ | 134 | #endif /* !ASSEMBLY_ */ |
106 | 135 | ||
107 | #endif | 136 | #endif /* ASM_X86__HW_IRQ_H */ |