2008-10-22 22:26:29 -07:00
# ifndef _ASM_X86_IRQ_H
# define _ASM_X86_IRQ_H
2008-05-02 22:14:44 +02:00
/*
* ( C ) 1992 , 1993 Linus Torvalds , ( C ) 1997 Ingo Molnar
*
* IRQ / IPI changes taken from work by Thomas Radke
* < tomsoft @ informatik . tu - chemnitz . de >
*/
# include <asm/apicdef.h>
# include <asm/irq_vectors.h>
static inline int irq_canonicalize ( int irq )
{
return ( ( irq = = 2 ) ? 9 : irq ) ;
}
# ifdef CONFIG_X86_LOCAL_APIC
# define ARCH_HAS_NMI_WATCHDOG
# endif
# ifdef CONFIG_4KSTACKS
extern void irq_ctx_init ( int cpu ) ;
extern void irq_ctx_exit ( int cpu ) ;
# define __ARCH_HAS_DO_SOFTIRQ
2007-10-11 11:20:03 +02:00
# else
2008-05-02 22:14:44 +02:00
# define irq_ctx_init(cpu) do { } while (0)
# define irq_ctx_exit(cpu) do { } while (0)
# ifdef CONFIG_X86_64
# define __ARCH_HAS_DO_SOFTIRQ
# endif
# endif
# ifdef CONFIG_HOTPLUG_CPU
# include <linux/cpumask.h>
2008-12-16 17:33:58 -08:00
extern void fixup_irqs ( void ) ;
2009-10-26 14:24:34 -08:00
extern void irq_force_complete_move ( int ) ;
2007-10-11 11:20:03 +02:00
# endif
2008-05-02 22:14:44 +02:00
2009-10-14 09:22:57 -05:00
extern void ( * x86_platform_ipi_callback ) ( void ) ;
2008-05-02 22:14:44 +02:00
extern void native_init_IRQ ( void ) ;
2009-02-06 14:09:40 -08:00
extern bool handle_irq ( unsigned irq , struct pt_regs * regs ) ;
2008-05-02 22:14:44 +02:00
2009-02-06 14:09:41 -08:00
extern unsigned int do_IRQ ( struct pt_regs * regs ) ;
2008-05-02 22:14:44 +02:00
/* Interrupt vector management */
extern DECLARE_BITMAP ( used_vectors , NR_VECTORS ) ;
2008-12-19 15:23:44 -08:00
extern int vector_used_by_percpu_irq ( unsigned int vector ) ;
2008-05-02 22:14:44 +02:00
2009-08-20 09:41:38 +02:00
extern void init_ISA_irqs ( void ) ;
2008-10-22 22:26:29 -07:00
# endif /* _ASM_X86_IRQ_H */