From 9465949559fde25c36ce7116e92c8f256b08ad53 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Wed, 19 Mar 2003 08:27:55 +0000 Subject: * abilist: New directory of libfoo.abilist files maintained using scripts/merge-abilist.awk and "make update-abi" rules. * Makefile (distribute): Add abilist/*.abilist. * Makerules [$(build-shared) = yes] [$(subdir)] (tests): Depend on check-abi. --- nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) (limited to 'nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h') diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h index 2b58d2e63a..4ffbf8deb7 100644 --- a/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h +++ b/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h @@ -102,12 +102,13 @@ /* Atomically store newval and return the old value. */ #define __lll_test_and_set(futex, newval) \ ({ int __val; \ - __asm __volatile ("1: lwarx %0,0,%3\n" \ + __asm __volatile (__lll_rel_instr "\n" \ + "1: lwarx %0,0,%3\n" \ " stwcx. %2,0,%3\n" \ " bne- 1b" \ : "=&r" (__val), "=m" (*futex) \ : "r" (futex), "r" (newval), "1" (*futex) \ - : "cr0"); \ + : "cr0", "memory"); \ __val; }) @@ -135,16 +136,12 @@ extern int __lll_timedlock_wait }) #define lll_mutex_unlock(lock) \ - (void) ({ \ + ((void) ({ \ int *__futex = &(lock); \ - __asm __volatile (__lll_rel_instr ::: "memory"); \ - int __val = __lll_add (__futex, -1); \ - if (__builtin_expect (__val != 1, 0)) \ - { \ - *__futex = 0; \ - lll_futex_wake (__futex, 1); \ - } \ - }) + int __val = __lll_test_and_set (__futex, 0); \ + if (__builtin_expect (__val > 1, 0)) \ + lll_futex_wake (__futex, 1); \ + })) #define lll_mutex_islocked(futex) \ (futex != 0) -- cgit v1.2.3