Commit e6300155 authored by Linus Torvalds's avatar Linus Torvalds

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: default avatarLinus Torvalds <torvalds@osdl.org>
parent e317c8cc
...@@ -111,6 +111,7 @@ static struct irq_desc bad_irq_desc = { ...@@ -111,6 +111,7 @@ static struct irq_desc bad_irq_desc = {
*/ */
asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs) 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; struct irqdesc *desc = irq_desc + irq;
/* /*
...@@ -122,13 +123,13 @@ asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs) ...@@ -122,13 +123,13 @@ asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
irq_enter(); irq_enter();
set_irq_regs(regs);
desc_handle_irq(irq, desc); desc_handle_irq(irq, desc);
/* AT91 specific workaround */ /* AT91 specific workaround */
irq_finish(irq); irq_finish(irq);
irq_exit(); irq_exit();
set_irq_regs(old_regs);
} }
void set_irq_flags(unsigned int irq, unsigned int iflags) void set_irq_flags(unsigned int irq, unsigned int iflags)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment