From: Linus Torvalds Date: Fri, 6 Oct 2006 20:11:15 +0000 (-0700) Subject: ARM: fix up nested irq regs usage X-Git-Tag: v2.6.19-rc2~283 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e630015504cdd4d166c371fec39b8ca258fcbc0e;p=linux-2.6 ARM: fix up nested irq regs usage This should fix up the per-cpu irq register pointer if we have nested hardware interrupts. Signed-off-by: Linus Torvalds --- diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index e999b11de2..2c4ff1cbe3 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c @@ -111,6 +111,7 @@ static struct irq_desc bad_irq_desc = { */ asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs) { + struct pt_regs *old_regs = set_irq_regs(regs); struct irqdesc *desc = irq_desc + irq; /* @@ -122,13 +123,13 @@ asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs) irq_enter(); - set_irq_regs(regs); desc_handle_irq(irq, desc); /* AT91 specific workaround */ irq_finish(irq); irq_exit(); + set_irq_regs(old_regs); } void set_irq_flags(unsigned int irq, unsigned int iflags)