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 19static __inline__ int irq_canonicalize(int irq) 20{ 21 return ((irq == 2) ? 9 : irq); 22} 23 24extern void disable_irq(unsigned int); 25extern void disable_irq_nosync(unsigned int); 26extern void enable_irq(unsigned int); 27extern void release_x86_irqs(struct task_struct *); 28extern 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 */ 38union irq_ctx { 39 struct thread_info tinfo; 40 u32 stack[THREAD_SIZE/sizeof(u32)]; 41}; 42 43extern union irq_ctx *hardirq_ctx[NR_CPUS]; 44extern union irq_ctx *softirq_ctx[NR_CPUS]; 45 46extern 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 53struct irqaction; 54struct pt_regs; 55asmlinkage int handle_IRQ_event(unsigned int, struct pt_regs *, 56 struct irqaction *); 57 58#endif /* _ASM_IRQ_H */ 59

