From: Linus Torvalds Date: Fri, 6 Oct 2006 20:11:15 +0000 (-0700) Subject: ARM: fix up nested irq regs usage X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=e630015504cdd4d166c371fec39b8ca258fcbc0e;p=openwrt%2Fstaging%2Fblogic.git 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 e999b11de2c6..2c4ff1cbe334 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)