ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / include / asm-i386 / irq.h
1 #ifndef _ASM_IRQ_H
2 #define _ASM_IRQ_H
3
4 /*
5  *      linux/include/asm/irq.h
6  *
7  *      (C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar
8  *
9  *      IRQ/IPI changes taken from work by Thomas Radke
10  *      <tomsoft@informatik.tu-chemnitz.de>
11  */
12
13 #include <linux/config.h>
14 #include <linux/sched.h>
15 /* include comes from machine specific directory */
16 #include "irq_vectors.h"
17 #include <asm/thread_info.h>
18
19 static __inline__ int irq_canonicalize(int irq)
20 {
21         return ((irq == 2) ? 9 : irq);
22 }
23
24 extern void disable_irq(unsigned int);
25 extern void disable_irq_nosync(unsigned int);
26 extern void enable_irq(unsigned int);
27 extern void release_x86_irqs(struct task_struct *);
28 extern int can_request_irq(unsigned int, unsigned long flags);
29
30 #ifdef CONFIG_X86_LOCAL_APIC
31 #define ARCH_HAS_NMI_WATCHDOG           /* See include/linux/nmi.h */
32 #endif
33
34 #ifdef CONFIG_4KSTACKS
35 /*
36  * per-CPU IRQ handling contexts (thread information and stack)
37  */
38 union irq_ctx {
39         struct thread_info      tinfo;
40         u32                     stack[THREAD_SIZE/sizeof(u32)];
41 };
42
43 extern union irq_ctx *hardirq_ctx[NR_CPUS];
44 extern union irq_ctx *softirq_ctx[NR_CPUS];
45
46 extern void irq_ctx_init(int cpu);
47
48 #define __ARCH_HAS_DO_SOFTIRQ
49 #else
50 #define irq_ctx_init(cpu) do { ; } while (0)
51 #endif
52
53 struct irqaction;
54 struct pt_regs;
55 asmlinkage int handle_IRQ_event(unsigned int, struct pt_regs *,
56                                 struct irqaction *);
57
58 #endif /* _ASM_IRQ_H */