diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /include/asm-i386/hw_irq.h |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'include/asm-i386/hw_irq.h')
-rw-r--r-- | include/asm-i386/hw_irq.h | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/include/asm-i386/hw_irq.h b/include/asm-i386/hw_irq.h new file mode 100644 index 000000000000..4ac84cc6f01a --- /dev/null +++ b/include/asm-i386/hw_irq.h | |||
@@ -0,0 +1,79 @@ | |||
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/config.h> | ||
16 | #include <linux/profile.h> | ||
17 | #include <asm/atomic.h> | ||
18 | #include <asm/irq.h> | ||
19 | #include <asm/sections.h> | ||
20 | |||
21 | /* | ||
22 | * Various low-level irq details needed by irq.c, process.c, | ||
23 | * time.c, io_apic.c and smp.c | ||
24 | * | ||
25 | * Interrupt entry/exit code at both C and assembly level | ||
26 | */ | ||
27 | |||
28 | extern u8 irq_vector[NR_IRQ_VECTORS]; | ||
29 | #define IO_APIC_VECTOR(irq) (irq_vector[irq]) | ||
30 | #define AUTO_ASSIGN -1 | ||
31 | |||
32 | extern void (*interrupt[NR_IRQS])(void); | ||
33 | |||
34 | #ifdef CONFIG_SMP | ||
35 | fastcall void reschedule_interrupt(void); | ||
36 | fastcall void invalidate_interrupt(void); | ||
37 | fastcall void call_function_interrupt(void); | ||
38 | #endif | ||
39 | |||
40 | #ifdef CONFIG_X86_LOCAL_APIC | ||
41 | fastcall void apic_timer_interrupt(void); | ||
42 | fastcall void error_interrupt(void); | ||
43 | fastcall void spurious_interrupt(void); | ||
44 | fastcall void thermal_interrupt(struct pt_regs *); | ||
45 | #define platform_legacy_irq(irq) ((irq) < 16) | ||
46 | #endif | ||
47 | |||
48 | void disable_8259A_irq(unsigned int irq); | ||
49 | void enable_8259A_irq(unsigned int irq); | ||
50 | int i8259A_irq_pending(unsigned int irq); | ||
51 | void make_8259A_irq(unsigned int irq); | ||
52 | void init_8259A(int aeoi); | ||
53 | void FASTCALL(send_IPI_self(int vector)); | ||
54 | void init_VISWS_APIC_irqs(void); | ||
55 | void setup_IO_APIC(void); | ||
56 | void disable_IO_APIC(void); | ||
57 | void print_IO_APIC(void); | ||
58 | int IO_APIC_get_PCI_irq_vector(int bus, int slot, int fn); | ||
59 | void send_IPI(int dest, int vector); | ||
60 | void setup_ioapic_dest(void); | ||
61 | |||
62 | extern unsigned long io_apic_irqs; | ||
63 | |||
64 | extern atomic_t irq_err_count; | ||
65 | extern atomic_t irq_mis_count; | ||
66 | |||
67 | #define IO_APIC_IRQ(x) (((x) >= 16) || ((1<<(x)) & io_apic_irqs)) | ||
68 | |||
69 | #if defined(CONFIG_X86_IO_APIC) | ||
70 | static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) | ||
71 | { | ||
72 | if (IO_APIC_IRQ(i)) | ||
73 | send_IPI_self(IO_APIC_VECTOR(i)); | ||
74 | } | ||
75 | #else | ||
76 | static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) {} | ||
77 | #endif | ||
78 | |||
79 | #endif /* _ASM_HW_IRQ_H */ | ||