patch-2.4.20 linux-2.4.20/arch/i386/kernel/irq.c
Next file: linux-2.4.20/arch/i386/kernel/mpparse.c
Previous file: linux-2.4.20/arch/i386/kernel/io_apic.c
Back to the patch index
Back to the overall index
- Lines: 21
- Date:
Thu Nov 28 15:53:09 2002
- Orig file:
linux-2.4.19/arch/i386/kernel/irq.c
- Orig date:
Thu Oct 25 13:53:46 2001
diff -urN linux-2.4.19/arch/i386/kernel/irq.c linux-2.4.20/arch/i386/kernel/irq.c
@@ -577,6 +577,20 @@
irq_desc_t *desc = irq_desc + irq;
struct irqaction * action;
unsigned int status;
+#ifdef CONFIG_DEBUG_STACKOVERFLOW
+ long esp;
+
+ /* Debugging check for stack overflow: is there less than 1KB free? */
+ __asm__ __volatile__("andl %%esp,%0" : "=r" (esp) : "0" (8191));
+ if (unlikely(esp < (sizeof(struct task_struct) + 1024))) {
+ extern void show_stack(unsigned long *);
+
+ printk("do_IRQ: stack overflow: %ld\n",
+ esp - sizeof(struct task_struct));
+ __asm__ __volatile__("movl %%esp,%0" : "=r" (esp));
+ show_stack((void *)esp);
+ }
+#endif
kstat.irqs[cpu][irq]++;
spin_lock(&desc->lock);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)