diff options
| -rw-r--r-- | arch/cris/Kconfig | 4 | ||||
| -rw-r--r-- | arch/cris/kernel/irq.c | 6 |
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 | ||
| 58 | source "fs/Kconfig.binfmt" | 58 | source "fs/Kconfig.binfmt" |
| 59 | 59 | ||
| 60 | config GENERIC_HARDIRQS | ||
| 61 | bool | ||
| 62 | default y | ||
| 63 | |||
| 60 | config ETRAX_CMDLINE | 64 | config 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: | |||
| 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) |
