aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/irq.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/kernel/irq.c')
-rw-r--r--arch/arm/kernel/irq.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c
index 2e1bf830fe11..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 = {
111 */ 111 */
112asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs) 112asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
113{ 113{
114 struct pt_regs *old_regs = set_irq_regs(regs);
114 struct irqdesc *desc = irq_desc + irq; 115 struct irqdesc *desc = irq_desc + irq;
115 116
116 /* 117 /*
@@ -122,12 +123,13 @@ asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
122 123
123 irq_enter(); 124 irq_enter();
124 125
125 desc_handle_irq(irq, desc, regs); 126 desc_handle_irq(irq, desc);
126 127
127 /* AT91 specific workaround */ 128 /* AT91 specific workaround */
128 irq_finish(irq); 129 irq_finish(irq);
129 130
130 irq_exit(); 131 irq_exit();
132 set_irq_regs(old_regs);
131} 133}
132 134
133void set_irq_flags(unsigned int irq, unsigned int iflags) 135void set_irq_flags(unsigned int irq, unsigned int iflags)