X-Git-Url: http://git.cascardo.info/?a=blobdiff_plain;f=arch%2Ftile%2Flib%2Fspinlock_32.c;h=076c6cc431136fc8475b0fa0b768bb7a6083dc66;hb=1cd04d293c818687795b83cd8f2626bd4662feeb;hp=88c2a53362e738110913134b840e1abe01df9fd9;hpb=996034b117b467709dec7811ef134063934fa626;p=cascardo%2Flinux.git diff --git a/arch/tile/lib/spinlock_32.c b/arch/tile/lib/spinlock_32.c index 88c2a53362e7..076c6cc43113 100644 --- a/arch/tile/lib/spinlock_32.c +++ b/arch/tile/lib/spinlock_32.c @@ -76,6 +76,12 @@ void arch_spin_unlock_wait(arch_spinlock_t *lock) do { delay_backoff(iterations++); } while (READ_ONCE(lock->current_ticket) == curr); + + /* + * The TILE architecture doesn't do read speculation; therefore + * a control dependency guarantees a LOAD->{LOAD,STORE} order. + */ + barrier(); } EXPORT_SYMBOL(arch_spin_unlock_wait);