blackfin: bf561: forgot CSYNC in get_core_lock_noflush
authorBob Liu <lliubbo@gmail.com>
Tue, 17 Jan 2012 10:06:34 +0000 (18:06 +0800)
committerBob Liu <lliubbo@gmail.com>
Wed, 21 Mar 2012 03:00:07 +0000 (11:00 +0800)
SMP kgdb runs into dead loop without this CSYNC when one core single
steps over get_core_lock_noflush and the other executes get_core_lock
as a slave node.

Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Bob Liu <lliubbo@gmail.com>
arch/blackfin/mach-bf561/atomic.S

index 52d6f73fccedd152fb215702bebf28556ab3487e..2a08df8e8c4c770f4bbf55a0bd6266ada0198374 100644 (file)
@@ -72,6 +72,13 @@ ENTRY(_get_core_lock_noflush)
        SSYNC(r2);
        jump .Lretry_corelock_noflush
 .Ldone_corelock_noflush:
+       /*
+        * SMP kgdb runs into dead loop without NOP here, when one core
+        * single steps over get_core_lock_noflush and the other executes
+        * get_core_lock as a slave node.
+        */
+       nop;
+       CSYNC(r2);
        rts;
 ENDPROC(_get_core_lock_noflush)