diff options
Diffstat (limited to 'arch/powerpc/lib/locks.c')
-rw-r--r-- | arch/powerpc/lib/locks.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/powerpc/lib/locks.c b/arch/powerpc/lib/locks.c index 0c9c8d7d0734..170a0346f756 100644 --- a/arch/powerpc/lib/locks.c +++ b/arch/powerpc/lib/locks.c | |||
@@ -70,12 +70,16 @@ void __rw_yield(arch_rwlock_t *rw) | |||
70 | 70 | ||
71 | void arch_spin_unlock_wait(arch_spinlock_t *lock) | 71 | void arch_spin_unlock_wait(arch_spinlock_t *lock) |
72 | { | 72 | { |
73 | smp_mb(); | ||
74 | |||
73 | while (lock->slock) { | 75 | while (lock->slock) { |
74 | HMT_low(); | 76 | HMT_low(); |
75 | if (SHARED_PROCESSOR) | 77 | if (SHARED_PROCESSOR) |
76 | __spin_yield(lock); | 78 | __spin_yield(lock); |
77 | } | 79 | } |
78 | HMT_medium(); | 80 | HMT_medium(); |
81 | |||
82 | smp_mb(); | ||
79 | } | 83 | } |
80 | 84 | ||
81 | EXPORT_SYMBOL(arch_spin_unlock_wait); | 85 | EXPORT_SYMBOL(arch_spin_unlock_wait); |