提交 eb2746dd 编写于 作者: J Jesper Nilsson 提交者: Linus Torvalds

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: NJesper Nilsson <jesper.nilsson@axis.com>
Acked-by: NMikael Starvik <starvik@axis.com>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 9587997a
...@@ -57,6 +57,10 @@ menu "General setup" ...@@ -57,6 +57,10 @@ menu "General setup"
source "fs/Kconfig.binfmt" source "fs/Kconfig.binfmt"
config GENERIC_HARDIRQS
bool
default y
config ETRAX_CMDLINE config ETRAX_CMDLINE
string "Kernel command line" string "Kernel command line"
default "root=/dev/mtdblock3" default "root=/dev/mtdblock3"
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* linux/arch/cris/kernel/irq.c * 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) * Authors: Bjorn Wesen (bjornw@axis.com)
* *
...@@ -92,14 +92,16 @@ int show_interrupts(struct seq_file *p, void *v) ...@@ -92,14 +92,16 @@ int show_interrupts(struct seq_file *p, void *v)
asmlinkage void do_IRQ(int irq, struct pt_regs * regs) asmlinkage void do_IRQ(int irq, struct pt_regs * regs)
{ {
unsigned long sp; unsigned long sp;
struct pt_regs *old_regs = set_irq_regs(regs);
irq_enter(); irq_enter();
sp = rdsp(); sp = rdsp();
if (unlikely((sp & (PAGE_SIZE - 1)) < (PAGE_SIZE/8))) { if (unlikely((sp & (PAGE_SIZE - 1)) < (PAGE_SIZE/8))) {
printk("do_IRQ: stack overflow: %lX\n", sp); printk("do_IRQ: stack overflow: %lX\n", sp);
show_stack(NULL, (unsigned long *)sp); show_stack(NULL, (unsigned long *)sp);
} }
__do_IRQ(irq, regs); __do_IRQ(irq);
irq_exit(); irq_exit();
set_irq_regs(old_regs);
} }
void weird_irq(void) void weird_irq(void)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册