aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesper Nilsson <jesper.nilsson@axis.com>2007-11-14 20:00:52 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-11-14 21:45:45 -0500
commiteb2746ddc376c9c72905fbdd3f8d1e68a81957aa (patch)
tree31e2dd0bba8a16bf9d9d0be3d5f7df501f284a2e
parent9587997a4a9f74901981e0a751a7ae0e46a72b94 (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>
-rw-r--r--arch/cris/Kconfig4
-rw-r--r--arch/cris/kernel/irq.c6
2 files changed, 8 insertions, 2 deletions
diff --git a/arch/cris/Kconfig b/arch/cris/Kconfig
index 21900a9378bb..f653772a87a8 100644
--- a/arch/cris/Kconfig
+++ b/arch/cris/Kconfig
@@ -57,6 +57,10 @@ menu "General setup"
57 57
58source "fs/Kconfig.binfmt" 58source "fs/Kconfig.binfmt"
59 59
60config GENERIC_HARDIRQS
61 bool
62 default y
63
60config ETRAX_CMDLINE 64config ETRAX_CMDLINE
61 string "Kernel command line" 65 string "Kernel command line"
62 default "root=/dev/mtdblock3" 66 default "root=/dev/mtdblock3"
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:
92asmlinkage void do_IRQ(int irq, struct pt_regs * regs) 92asmlinkage 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
105void weird_irq(void) 107void weird_irq(void)