diff options
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/powerpc/nptl/pthread_spin_lock.c | 4 | ||||
-rw-r--r-- | sysdeps/powerpc/nptl/pthread_spin_trylock.c | 4 | ||||
-rw-r--r-- | sysdeps/powerpc/nptl/pthread_spin_unlock.c (renamed from sysdeps/unix/sysv/linux/powerpc/pthread_spin_unlock.c) | 3 |
3 files changed, 5 insertions, 6 deletions
diff --git a/sysdeps/powerpc/nptl/pthread_spin_lock.c b/sysdeps/powerpc/nptl/pthread_spin_lock.c index d7d4cae6fa..fae7f7e0b9 100644 --- a/sysdeps/powerpc/nptl/pthread_spin_lock.c +++ b/sysdeps/powerpc/nptl/pthread_spin_lock.c @@ -24,12 +24,12 @@ pthread_spin_lock (pthread_spinlock_t *lock) unsigned int __tmp; asm volatile ( - "1: lwarx %0,0,%1\n" + "1: lwarx %0,0,%1" MUTEX_HINT_ACQ "\n" " cmpwi 0,%0,0\n" " bne- 2f\n" " stwcx. %2,0,%1\n" " bne- 2f\n" - " isync\n" + __ARCH_ACQ_INSTR "\n" " .subsection 1\n" "2: lwzx %0,0,%1\n" " cmpwi 0,%0,0\n" diff --git a/sysdeps/powerpc/nptl/pthread_spin_trylock.c b/sysdeps/powerpc/nptl/pthread_spin_trylock.c index c485aa4bf9..09791c36a8 100644 --- a/sysdeps/powerpc/nptl/pthread_spin_trylock.c +++ b/sysdeps/powerpc/nptl/pthread_spin_trylock.c @@ -25,13 +25,13 @@ pthread_spin_trylock (pthread_spinlock_t *lock) unsigned int old; int err = EBUSY; - asm ("1: lwarx %0,0,%2\n" + asm ("1: lwarx %0,0,%2" MUTEX_HINT_ACQ "\n" " cmpwi 0,%0,0\n" " bne 2f\n" " stwcx. %3,0,%2\n" " bne- 1b\n" " li %1,0\n" - " isync\n" + __ARCH_ACQ_INSTR "\n" "2: " : "=&r" (old), "=&r" (err) : "r" (lock), "r" (1), "1" (err) diff --git a/sysdeps/unix/sysv/linux/powerpc/pthread_spin_unlock.c b/sysdeps/powerpc/nptl/pthread_spin_unlock.c index 7af694f4ab..f830ad2880 100644 --- a/sysdeps/unix/sysv/linux/powerpc/pthread_spin_unlock.c +++ b/sysdeps/powerpc/nptl/pthread_spin_unlock.c @@ -22,7 +22,6 @@ int pthread_spin_unlock (pthread_spinlock_t *lock) { - __asm __volatile (__ARCH_REL_INSTR ::: "memory"); - *lock = 0; + atomic_store_release (lock, 0); return 0; } |