diff options
Diffstat (limited to 'arch/powerpc/xmon')
-rw-r--r-- | arch/powerpc/xmon/xmon.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c index f12687d0354d..b481db1dacb4 100644 --- a/arch/powerpc/xmon/xmon.c +++ b/arch/powerpc/xmon/xmon.c | |||
@@ -330,18 +330,17 @@ static void release_output_lock(void) | |||
330 | static int xmon_core(struct pt_regs *regs, int fromipi) | 330 | static int xmon_core(struct pt_regs *regs, int fromipi) |
331 | { | 331 | { |
332 | int cmd = 0; | 332 | int cmd = 0; |
333 | unsigned long msr; | ||
334 | struct bpt *bp; | 333 | struct bpt *bp; |
335 | long recurse_jmp[JMP_BUF_LEN]; | 334 | long recurse_jmp[JMP_BUF_LEN]; |
336 | unsigned long offset; | 335 | unsigned long offset; |
336 | unsigned long flags; | ||
337 | #ifdef CONFIG_SMP | 337 | #ifdef CONFIG_SMP |
338 | int cpu; | 338 | int cpu; |
339 | int secondary; | 339 | int secondary; |
340 | unsigned long timeout; | 340 | unsigned long timeout; |
341 | #endif | 341 | #endif |
342 | 342 | ||
343 | msr = mfmsr(); | 343 | local_irq_save(flags); |
344 | mtmsr(msr & ~MSR_EE); /* disable interrupts */ | ||
345 | 344 | ||
346 | bp = in_breakpoint_table(regs->nip, &offset); | 345 | bp = in_breakpoint_table(regs->nip, &offset); |
347 | if (bp != NULL) { | 346 | if (bp != NULL) { |
@@ -516,7 +515,7 @@ static int xmon_core(struct pt_regs *regs, int fromipi) | |||
516 | 515 | ||
517 | insert_cpu_bpts(); | 516 | insert_cpu_bpts(); |
518 | 517 | ||
519 | mtmsr(msr); /* restore interrupt enable */ | 518 | local_irq_restore(flags); |
520 | 519 | ||
521 | return cmd != 'X' && cmd != EOF; | 520 | return cmd != 'X' && cmd != EOF; |
522 | } | 521 | } |