aboutsummaryrefslogtreecommitdiffstats
path: root/arch/m68k
diff options
context:
space:
mode:
authorRoman Zippel <zippel@linux-m68k.org>2006-06-23 05:04:59 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-23 10:43:01 -0400
commit6d2f16a8917eb77a8b79849686159f3a5eae2501 (patch)
treeeddcb022e805523873fccf30ce3d9a21d27dc41d /arch/m68k
parent2dcf15b78d14c8d92fa1ce1be95b75e8d27ef99f (diff)
[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/m68k')
-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 320fde05dc63..522079f8c2ba 100644
--- a/arch/m68k/kernel/entry.S
+++ b/arch/m68k/kernel/entry.S
@@ -226,7 +226,7 @@ ENTRY(nmi_handler)
226inthandler: 226inthandler:
227 SAVE_ALL_INT 227 SAVE_ALL_INT
228 GET_CURRENT(%d0) 228 GET_CURRENT(%d0)
229 addqb #1,%curptr@(TASK_INFO+TINFO_PREEMPT+2) 229 addqb #1,%curptr@(TASK_INFO+TINFO_PREEMPT+1)
230 | put exception # in d0 230 | put exception # in d0
231 bfextu %sp@(PT_VECTOR){#4,#10},%d0 231 bfextu %sp@(PT_VECTOR){#4,#10},%d0
232 232
@@ -245,7 +245,7 @@ inthandler:
2453: addql #8,%sp | pop parameters off stack 2453: addql #8,%sp | pop parameters off stack
246 246
247ret_from_interrupt: 247ret_from_interrupt:
248 subqb #1,%curptr@(TASK_INFO+TINFO_PREEMPT+2) 248 subqb #1,%curptr@(TASK_INFO+TINFO_PREEMPT+1)
249 jeq 1f 249 jeq 1f
2502: 2502:
251 RESTORE_ALL 251 RESTORE_ALL
diff --git a/arch/m68k/kernel/ints.c b/arch/m68k/kernel/ints.c
index 514d323ad536..4b85514792e7 100644
--- a/arch/m68k/kernel/ints.c
+++ b/arch/m68k/kernel/ints.c
@@ -95,6 +95,12 @@ void __init init_IRQ(void)
95{ 95{
96 int i; 96 int i;
97 97
98 /* assembly irq entry code relies on this... */
99 if (HARDIRQ_MASK != 0x00ff0000) {
100 extern void hardirq_mask_is_broken(void);
101 hardirq_mask_is_broken();
102 }
103
98 for (i = 0; i < SYS_IRQS; i++) { 104 for (i = 0; i < SYS_IRQS; i++) {
99 if (mach_default_handler) 105 if (mach_default_handler)
100 irq_list[i].handler = (*mach_default_handler)[i]; 106 irq_list[i].handler = (*mach_default_handler)[i];