diff options
author | Jesper Nilsson <jesper.nilsson@axis.com> | 2007-11-14 20:00:52 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-14 21:45:45 -0500 |
commit | eb2746ddc376c9c72905fbdd3f8d1e68a81957aa (patch) | |
tree | 31e2dd0bba8a16bf9d9d0be3d5f7df501f284a2e /arch/cris/kernel/irq.c | |
parent | 9587997a4a9f74901981e0a751a7ae0e46a72b94 (diff) |
cris build fixes: irq fixes
- New file include/asm-cris/irq_regs.h.
- Change handling of registers for do_IRQ.
- Add GENERIC_HARDIRQS to Kconfig.
Signed-off-by: Jesper Nilsson <jesper.nilsson@axis.com>
Acked-by: Mikael Starvik <starvik@axis.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/cris/kernel/irq.c')
-rw-r--r-- | arch/cris/kernel/irq.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/cris/kernel/irq.c b/arch/cris/kernel/irq.c index 5c27ff86121b..2dfac8c79090 100644 --- a/arch/cris/kernel/irq.c +++ b/arch/cris/kernel/irq.c | |||
@@ -2,7 +2,7 @@ | |||
2 | * | 2 | * |
3 | * linux/arch/cris/kernel/irq.c | 3 | * linux/arch/cris/kernel/irq.c |
4 | * | 4 | * |
5 | * Copyright (c) 2000,2001 Axis Communications AB | 5 | * Copyright (c) 2000,2007 Axis Communications AB |
6 | * | 6 | * |
7 | * Authors: Bjorn Wesen (bjornw@axis.com) | 7 | * Authors: Bjorn Wesen (bjornw@axis.com) |
8 | * | 8 | * |
@@ -92,14 +92,16 @@ skip: | |||
92 | asmlinkage void do_IRQ(int irq, struct pt_regs * regs) | 92 | asmlinkage void do_IRQ(int irq, struct pt_regs * regs) |
93 | { | 93 | { |
94 | unsigned long sp; | 94 | unsigned long sp; |
95 | struct pt_regs *old_regs = set_irq_regs(regs); | ||
95 | irq_enter(); | 96 | irq_enter(); |
96 | sp = rdsp(); | 97 | sp = rdsp(); |
97 | if (unlikely((sp & (PAGE_SIZE - 1)) < (PAGE_SIZE/8))) { | 98 | if (unlikely((sp & (PAGE_SIZE - 1)) < (PAGE_SIZE/8))) { |
98 | printk("do_IRQ: stack overflow: %lX\n", sp); | 99 | printk("do_IRQ: stack overflow: %lX\n", sp); |
99 | show_stack(NULL, (unsigned long *)sp); | 100 | show_stack(NULL, (unsigned long *)sp); |
100 | } | 101 | } |
101 | __do_IRQ(irq, regs); | 102 | __do_IRQ(irq); |
102 | irq_exit(); | 103 | irq_exit(); |
104 | set_irq_regs(old_regs); | ||
103 | } | 105 | } |
104 | 106 | ||
105 | void weird_irq(void) | 107 | void weird_irq(void) |