diff options
author | Haavard Skinnemoen <hskinnemoen@atmel.com> | 2006-10-11 04:20:37 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-11 14:14:14 -0400 |
commit | 4e0fadfcf62e252d2b14de0e0927eb2830c0c28c (patch) | |
tree | eb88e5fe9c32e352dabb4e2d62e3492604565c7b /arch/avr32/mach-at32ap/intc.c | |
parent | 41716c7c21b15e7ecf14f0caf1eef3980707fb74 (diff) |
[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.c | 7 |
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 = { | |||
52 | asmlinkage void do_IRQ(int level, struct pt_regs *regs) | 52 | asmlinkage void do_IRQ(int level, struct pt_regs *regs) |
53 | { | 53 | { |
54 | struct irq_desc *desc; | 54 | struct irq_desc *desc; |
55 | struct pt_regs *old_regs; | ||
55 | unsigned int irq; | 56 | unsigned int irq; |
56 | unsigned long status_reg; | 57 | unsigned long status_reg; |
57 | 58 | ||
58 | local_irq_disable(); | 59 | local_irq_disable(); |
59 | 60 | ||
61 | old_regs = set_irq_regs(regs); | ||
62 | |||
60 | irq_enter(); | 63 | irq_enter(); |
61 | 64 | ||
62 | irq = intc_readl(&intc0, INTCAUSE0 - 4 * level); | 65 | irq = intc_readl(&intc0, INTCAUSE0 - 4 * level); |
63 | desc = irq_desc + irq; | 66 | desc = irq_desc + irq; |
64 | desc->handle_irq(irq, desc, regs); | 67 | desc->handle_irq(irq, desc); |
65 | 68 | ||
66 | /* | 69 | /* |
67 | * Clear all interrupt level masks so that we may handle | 70 | * Clear all interrupt level masks so that we may handle |
@@ -75,6 +78,8 @@ asmlinkage void do_IRQ(int level, struct pt_regs *regs) | |||
75 | sysreg_write(SR, status_reg); | 78 | sysreg_write(SR, status_reg); |
76 | 79 | ||
77 | irq_exit(); | 80 | irq_exit(); |
81 | |||
82 | set_irq_regs(old_regs); | ||
78 | } | 83 | } |
79 | 84 | ||
80 | void __init init_IRQ(void) | 85 | void __init init_IRQ(void) |