diff options
| author | Linus Walleij <linus.walleij@linaro.org> | 2013-10-16 10:05:53 +0200 |
|---|---|---|
| committer | Linus Walleij <linus.walleij@linaro.org> | 2013-10-16 10:05:53 +0200 |
| commit | 263c43a4479ecce52c0fdc84b4620e146263d549 (patch) | |
| tree | b29ad7d94892be7a40524400481f71a1c075a167 /arch/arc/include/asm/spinlock.h | |
| parent | 873ee9ed2c020b59e22a5082f73fc2960ec959bf (diff) | |
| parent | d0e639c9e06d44e713170031fe05fb60ebe680af (diff) | |
| download | talos-op-linux-263c43a4479ecce52c0fdc84b4620e146263d549.tar.gz talos-op-linux-263c43a4479ecce52c0fdc84b4620e146263d549.zip | |
Merge tag 'v3.12-rc4' into devel
Linux 3.12-rc4
Diffstat (limited to 'arch/arc/include/asm/spinlock.h')
| -rw-r--r-- | arch/arc/include/asm/spinlock.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/arc/include/asm/spinlock.h b/arch/arc/include/asm/spinlock.h index f158197ac5b0..b6a8c2dfbe6e 100644 --- a/arch/arc/include/asm/spinlock.h +++ b/arch/arc/include/asm/spinlock.h @@ -45,7 +45,14 @@ static inline int arch_spin_trylock(arch_spinlock_t *lock) static inline void arch_spin_unlock(arch_spinlock_t *lock) { - lock->slock = __ARCH_SPIN_LOCK_UNLOCKED__; + unsigned int tmp = __ARCH_SPIN_LOCK_UNLOCKED__; + + __asm__ __volatile__( + " ex %0, [%1] \n" + : "+r" (tmp) + : "r"(&(lock->slock)) + : "memory"); + smp_mb(); } |

