summaryrefslogtreecommitdiffstats
path: root/arch/avr32/mach-at32ap/intc.c
diff options
context:
space:
mode:
authorHaavard Skinnemoen2006-10-11 10:20:37 +0200
committerLinus Torvalds2006-10-11 20:14:14 +0200
commit4e0fadfcf62e252d2b14de0e0927eb2830c0c28c (patch)
treeeb88e5fe9c32e352dabb4e2d62e3492604565c7b /arch/avr32/mach-at32ap/intc.c
parent[PATCH] null dereference in fs/jbd/journal.c (diff)
downloadkernel-qcow2-linux-4e0fadfcf62e252d2b14de0e0927eb2830c0c28c.tar.gz
kernel-qcow2-linux-4e0fadfcf62e252d2b14de0e0927eb2830c0c28c.tar.xz
kernel-qcow2-linux-4e0fadfcf62e252d2b14de0e0927eb2830c0c28c.zip
[PATCH] IRQ: Fix AVR32 breakage
Make the necessary changes to AVR32 required by the irq regs stuff. Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/avr32/mach-at32ap/intc.c')
-rw-r--r--arch/avr32/mach-at32ap/intc.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/avr32/mach-at32ap/intc.c b/arch/avr32/mach-at32ap/intc.c
index 74f8c9f2f03d..eb87a18ad7b2 100644
--- a/arch/avr32/mach-at32ap/intc.c
+++ b/arch/avr32/mach-at32ap/intc.c
@@ -52,16 +52,19 @@ static struct intc intc0 = {
asmlinkage void do_IRQ(int level, struct pt_regs *regs)
{
struct irq_desc *desc;
+ struct pt_regs *old_regs;
unsigned int irq;
unsigned long status_reg;
local_irq_disable();
+ old_regs = set_irq_regs(regs);
+
irq_enter();
irq = intc_readl(&intc0, INTCAUSE0 - 4 * level);
desc = irq_desc + irq;
- desc->handle_irq(irq, desc, regs);
+ desc->handle_irq(irq, desc);
/*
* Clear all interrupt level masks so that we may handle
@@ -75,6 +78,8 @@ asmlinkage void do_IRQ(int level, struct pt_regs *regs)
sysreg_write(SR, status_reg);
irq_exit();
+
+ set_irq_regs(old_regs);
}
void __init init_IRQ(void)