diff --git a/arch/m68k/coldfire/entry.S b/arch/m68k/coldfire/entry.S index 3fc1df8..cfd9349 100644 --- a/arch/m68k/coldfire/entry.S +++ b/arch/m68k/coldfire/entry.S @@ -232,7 +232,6 @@ do_delayed_trace: ENTRY(inthandler) SAVE_ALL_INT GET_CURRENT(%d0) - addql #1,%curptr@(TASK_INFO+TINFO_PREEMPT+1) /* put exception # in d0 */ movel %sp@(PT_VECTOR),%d0 swap %d0 /* extract bits 25:18 */ @@ -244,7 +243,6 @@ ENTRY(inthandler) auto_irqhandler_fixup = . + 2 jbsr process_int /* process the IRQ */ addql #8,%sp /* pop parameters off stack */ - subql #1,%curptr@(TASK_INFO+TINFO_PREEMPT+1) jeq ret_from_last_interrupt 2: RESTORE_ALL diff --git a/arch/m68k/coldfire/ints.c b/arch/m68k/coldfire/ints.c index 3316463..85ce27e 100644 --- a/arch/m68k/coldfire/ints.c +++ b/arch/m68k/coldfire/ints.c @@ -100,6 +100,7 @@ asmlinkage void process_int(unsigned long vec, struct pt_regs *fp) old_regs = set_irq_regs(fp); kstat_cpu(0).irqs[vec]++; + irq_enter(); node = irq_list[vec]; if (!node) handle_badint(fp); @@ -109,6 +110,7 @@ asmlinkage void process_int(unsigned long vec, struct pt_regs *fp) node = node->next; } while (node); } + irq_exit(); set_irq_regs(old_regs); }