|
@@ -330,18 +330,17 @@ static void release_output_lock(void)
|
|
|
static int xmon_core(struct pt_regs *regs, int fromipi)
|
|
|
{
|
|
|
int cmd = 0;
|
|
|
- unsigned long msr;
|
|
|
struct bpt *bp;
|
|
|
long recurse_jmp[JMP_BUF_LEN];
|
|
|
unsigned long offset;
|
|
|
+ unsigned long flags;
|
|
|
#ifdef CONFIG_SMP
|
|
|
int cpu;
|
|
|
int secondary;
|
|
|
unsigned long timeout;
|
|
|
#endif
|
|
|
|
|
|
- msr = mfmsr();
|
|
|
- mtmsr(msr & ~MSR_EE); /* disable interrupts */
|
|
|
+ local_irq_save(flags);
|
|
|
|
|
|
bp = in_breakpoint_table(regs->nip, &offset);
|
|
|
if (bp != NULL) {
|
|
@@ -516,7 +515,7 @@ static int xmon_core(struct pt_regs *regs, int fromipi)
|
|
|
|
|
|
insert_cpu_bpts();
|
|
|
|
|
|
- mtmsr(msr); /* restore interrupt enable */
|
|
|
+ local_irq_restore(flags);
|
|
|
|
|
|
return cmd != 'X' && cmd != EOF;
|
|
|
}
|