summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorRoman Zippel <zippel@linux-m68k.org>2006-06-23 02:04:59 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-23 07:43:01 -0700
commit6d2f16a8917eb77a8b79849686159f3a5eae2501 (patch)
treeeddcb022e805523873fccf30ce3d9a21d27dc41d /arch
parent2dcf15b78d14c8d92fa1ce1be95b75e8d27ef99f (diff)
downloadop-kernel-dev-6d2f16a8917eb77a8b79849686159f3a5eae2501.zip
op-kernel-dev-6d2f16a8917eb77a8b79849686159f3a5eae2501.tar.gz
[PATCH] m68k: adjust to changed HARDIRQ_MASK
Adjust entry.S to the changed HARDIRQ_MASK, add a check to prevent it from silently breaking again. Signed-off-by: Roman Zippel <zippel@linux-m68k.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/m68k/kernel/entry.S4
-rw-r--r--arch/m68k/kernel/ints.c6
2 files changed, 8 insertions, 2 deletions
diff --git a/arch/m68k/kernel/entry.S b/arch/m68k/kernel/entry.S
index 320fde0..522079f 100644
--- a/arch/m68k/kernel/entry.S
+++ b/arch/m68k/kernel/entry.S
@@ -226,7 +226,7 @@ ENTRY(nmi_handler)
inthandler:
SAVE_ALL_INT
GET_CURRENT(%d0)
- addqb #1,%curptr@(TASK_INFO+TINFO_PREEMPT+2)
+ addqb #1,%curptr@(TASK_INFO+TINFO_PREEMPT+1)
| put exception # in d0
bfextu %sp@(PT_VECTOR){#4,#10},%d0
@@ -245,7 +245,7 @@ inthandler:
3: addql #8,%sp | pop parameters off stack
ret_from_interrupt:
- subqb #1,%curptr@(TASK_INFO+TINFO_PREEMPT+2)
+ subqb #1,%curptr@(TASK_INFO+TINFO_PREEMPT+1)
jeq 1f
2:
RESTORE_ALL
diff --git a/arch/m68k/kernel/ints.c b/arch/m68k/kernel/ints.c
index 514d323..4b85514 100644
--- a/arch/m68k/kernel/ints.c
+++ b/arch/m68k/kernel/ints.c
@@ -95,6 +95,12 @@ void __init init_IRQ(void)
{
int i;
+ /* assembly irq entry code relies on this... */
+ if (HARDIRQ_MASK != 0x00ff0000) {
+ extern void hardirq_mask_is_broken(void);
+ hardirq_mask_is_broken();
+ }
+
for (i = 0; i < SYS_IRQS; i++) {
if (mach_default_handler)
irq_list[i].handler = (*mach_default_handler)[i];
OpenPOWER on IntegriCloud