Index: arch/ppc/mm/4xx_tlb.c =================================================================== diff -u -r1.2 4xx_tlb.c --- arch/ppc/mm/4xx_tlb.c 2001/03/16 20:18:16 1.2 +++ arch/ppc/mm/4xx_tlb.c 2001/04/13 23:27:12 @@ -50,6 +50,9 @@ /* Global Variables */ +#if defined(CONFIG_XMON) || defined(CONFIG_KGDB) +extern void (*debugger_fault_handler)(struct pt_regs *); +#endif static pin_entry_t pin_table[PPC4XX_TLB_SIZE]; static unsigned long tlb_next_replace = 0; @@ -347,6 +350,10 @@ dtlb_miss_count++; if (tlbMiss(regs, badaddr, wasWrite, 1)) { +#if defined(CONFIG_XMON) || defined(CONFIG_KGDB) + /* don't enable interrupts while in the debugger */ + if (!debugger_fault_handler) +#endif sti(); do_page_fault(regs, badaddr, wasWrite); cli(); @@ -362,6 +369,9 @@ itlb_miss_count++; if (!current) { +#if defined(CONFIG_XMON) || defined(CONFIG_KGDB) + if (!debugger_fault_handler) +#endif sti(); bad_page_fault(regs, regs->nip); cli(); @@ -369,6 +379,9 @@ } if (tlbMiss(regs, regs->nip, 0, 1)) { +#if defined(CONFIG_XMON) || defined(CONFIG_KGDB) + if (!debugger_fault_handler) +#endif sti(); do_page_fault(regs, regs->nip, 0); cli();