aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/mips/kernel/gdb-stub.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/mips/kernel/gdb-stub.c b/arch/mips/kernel/gdb-stub.c
index d3fd1ab14274..7c46b336c7db 100644
--- a/arch/mips/kernel/gdb-stub.c
+++ b/arch/mips/kernel/gdb-stub.c
@@ -637,15 +637,18 @@ static struct gdb_bp_save async_bp;
637 * and only one can be active at a time. 637 * and only one can be active at a time.
638 */ 638 */
639extern spinlock_t smp_call_lock; 639extern spinlock_t smp_call_lock;
640
640void set_async_breakpoint(unsigned long *epc) 641void set_async_breakpoint(unsigned long *epc)
641{ 642{
642 /* skip breaking into userland */ 643 /* skip breaking into userland */
643 if ((*epc & 0x80000000) == 0) 644 if ((*epc & 0x80000000) == 0)
644 return; 645 return;
645 646
647#ifdef CONFIG_SMP
646 /* avoid deadlock if someone is make IPC */ 648 /* avoid deadlock if someone is make IPC */
647 if (spin_is_locked(&smp_call_lock)) 649 if (spin_is_locked(&smp_call_lock))
648 return; 650 return;
651#endif
649 652
650 async_bp.addr = *epc; 653 async_bp.addr = *epc;
651 *epc = (unsigned long)async_breakpoint; 654 *epc = (unsigned long)async_breakpoint;