summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorJesper Nilsson <jesper.nilsson@axis.com>2007-11-15 02:00:52 +0100
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-11-15 03:45:45 +0100
commiteb2746ddc376c9c72905fbdd3f8d1e68a81957aa (patch)
tree31e2dd0bba8a16bf9d9d0be3d5f7df501f284a2e /arch
parentcris-build-fixes-atomich-needs-compilerh-fix (diff)
downloadlinux-eb2746ddc376c9c72905fbdd3f8d1e68a81957aa.tar.xz
linux-eb2746ddc376c9c72905fbdd3f8d1e68a81957aa.zip
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')
-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"
source "fs/Kconfig.binfmt"
+config GENERIC_HARDIRQS
+ bool
+ default y
+
config ETRAX_CMDLINE
string "Kernel command line"
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 @@
*
* linux/arch/cris/kernel/irq.c
*
- * Copyright (c) 2000,2001 Axis Communications AB
+ * Copyright (c) 2000,2007 Axis Communications AB
*
* Authors: Bjorn Wesen (bjornw@axis.com)
*
@@ -92,14 +92,16 @@ skip:
asmlinkage void do_IRQ(int irq, struct pt_regs * regs)
{
unsigned long sp;
+ struct pt_regs *old_regs = set_irq_regs(regs);
irq_enter();
sp = rdsp();
if (unlikely((sp & (PAGE_SIZE - 1)) < (PAGE_SIZE/8))) {
printk("do_IRQ: stack overflow: %lX\n", sp);
show_stack(NULL, (unsigned long *)sp);
}
- __do_IRQ(irq, regs);
+ __do_IRQ(irq);
irq_exit();
+ set_irq_regs(old_regs);
}
void weird_irq(void)