forked from Minki/linux
7974891db2
IRQ stacks provide much better safety against unexpected stack use from interrupts, at the minimal downside of slightly higher memory usage. Enable irq stacks also for the default 8k stack on 32-bit kernels to minimize the problem of stack overflows through interrupt activity. This is what the 64-bit kernel and various other architectures already do. Signed-off-by: Christoph Hellwig <hch@lst.de> LKML-Reference: <20100628121554.GA6605@lst.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
51 lines
1.1 KiB
C
51 lines
1.1 KiB
C
#ifndef _ASM_X86_IRQ_H
|
|
#define _ASM_X86_IRQ_H
|
|
/*
|
|
* (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_X86_32
|
|
extern void irq_ctx_init(int cpu);
|
|
extern void irq_ctx_exit(int cpu);
|
|
#else
|
|
# define irq_ctx_init(cpu) do { } while (0)
|
|
# define irq_ctx_exit(cpu) do { } while (0)
|
|
#endif
|
|
|
|
#define __ARCH_HAS_DO_SOFTIRQ
|
|
|
|
#ifdef CONFIG_HOTPLUG_CPU
|
|
#include <linux/cpumask.h>
|
|
extern void fixup_irqs(void);
|
|
extern void irq_force_complete_move(int);
|
|
#endif
|
|
|
|
extern void (*x86_platform_ipi_callback)(void);
|
|
extern void native_init_IRQ(void);
|
|
extern bool handle_irq(unsigned irq, struct pt_regs *regs);
|
|
|
|
extern unsigned int do_IRQ(struct pt_regs *regs);
|
|
|
|
/* Interrupt vector management */
|
|
extern DECLARE_BITMAP(used_vectors, NR_VECTORS);
|
|
extern int vector_used_by_percpu_irq(unsigned int vector);
|
|
|
|
extern void init_ISA_irqs(void);
|
|
|
|
#endif /* _ASM_X86_IRQ_H */
|