@@ -25,6 +25,16 @@ extern void (*handle_arch_irq)(struct pt_regs *);
#endif
/*
+ * do not dump exception stack when MULTI_IRQ_HANDLER is defined, as
+ * the stack will be dumped for function (*handle_arch_irq)().
+ */
+#ifdef CONFIG_MULTI_IRQ_HANDLER
+#define __multi_irq_entry
+#else
+#define __multi_irq_entry __exception_irq_entry
+#endif
+
+/*
* This is for easy migration, but should be changed in the source
*/
#define do_bad_IRQ(irq,desc) \
@@ -71,7 +71,7 @@ int arch_show_interrupts(struct seq_file *p, int prec)
* come via this function. Instead, they should provide their
* own 'handler'
*/
-asmlinkage void __exception_irq_entry
+asmlinkage void __multi_irq_entry
asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
{
struct pt_regs *old_regs = set_irq_regs(regs);
@@ -129,7 +129,7 @@ static struct irq_chip pxa_low_gpio_chip = {
.irq_set_type = pxa_set_low_gpio_type,
};
-asmlinkage void icip_handle_irq(struct pt_regs *regs)
+asmlinkage void __exception_irq_entry icip_handle_irq(struct pt_regs *regs)
{
uint32_t icip, icmr, mask;
@@ -145,7 +145,7 @@ asmlinkage void icip_handle_irq(struct pt_regs *regs)
} while (1);
}
-asmlinkage void ichp_handle_irq(struct pt_regs *regs)
+asmlinkage void __exception_irq_entry ichp_handle_irq(struct pt_regs *regs)
{
uint32_t ichp;