diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-03-21 08:13:51 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-03-21 08:13:51 +0000 |
commit | 9f07eae2988388ffd0c652a4ec6d740df5795cab (patch) | |
tree | d9b1014adb210e32b9f92170b59fe7dffdf8efb6 | |
parent | 5a3ab2fc180056cb14eaeae0f571421be81e371b (diff) | |
download | glibc-9f07eae2988388ffd0c652a4ec6d740df5795cab.tar.gz |
Update.
2003-03-20 Ulrich Drepper <drepper@redhat.com>
* include/atomic.h: Define atomic_compare_and_exchange_val_acq,
atomic_compare_and_exchange_val_rel,
atomic_compare_and_exchange_bool_acq, and
atomic_compare_and_exchange_bool_rel instead of
atomic_compare_and_exchange_acq and atomic_compare_and_exchange_rel.
* sysdeps/i386/i486/bits/atomic.h: Define
__arch_compare_and_exchange_val_*_acq instead of
__arch_compare_and_exchange_*_acq.
* sysdeps/x86_64/bits/atomic.h: Likewise.
* sysdeps/ia64/bits/atomic.h: Define
__arch_compare_and_exchange_bool_*_acq instead of
__arch_compare_and_exchange_*_acq.
* sysdeps/powerpc/bits/atomic.h: Likewise.
* sysdeps/s390/bits/atomic.h: Likewise.
* gmon/mcount.c: Adjust for new form of compare&exchange macros.
* malloc/set-freeres.c: Likewise.
* nscd/cache.c: Likewise.
* stdlib/cxa_finalize.c: Likewise.
* sysdeps/unix/sysv/linux/getsysstats.c: Likewise.
-rw-r--r-- | ChangeLog | 22 | ||||
-rw-r--r-- | nptl/ChangeLog | 7 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h | 5 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/ia64/pthread_once.c | 3 |
4 files changed, 32 insertions, 5 deletions
@@ -1,3 +1,25 @@ +2003-03-20 Ulrich Drepper <drepper@redhat.com> + + * include/atomic.h: Define atomic_compare_and_exchange_val_acq, + atomic_compare_and_exchange_val_rel, + atomic_compare_and_exchange_bool_acq, and + atomic_compare_and_exchange_bool_rel instead of + atomic_compare_and_exchange_acq and atomic_compare_and_exchange_rel. + * sysdeps/i386/i486/bits/atomic.h: Define + __arch_compare_and_exchange_val_*_acq instead of + __arch_compare_and_exchange_*_acq. + * sysdeps/x86_64/bits/atomic.h: Likewise. + * sysdeps/ia64/bits/atomic.h: Define + __arch_compare_and_exchange_bool_*_acq instead of + __arch_compare_and_exchange_*_acq. + * sysdeps/powerpc/bits/atomic.h: Likewise. + * sysdeps/s390/bits/atomic.h: Likewise. + * gmon/mcount.c: Adjust for new form of compare&exchange macros. + * malloc/set-freeres.c: Likewise. + * nscd/cache.c: Likewise. + * stdlib/cxa_finalize.c: Likewise. + * sysdeps/unix/sysv/linux/getsysstats.c: Likewise. + 2003-03-20 Alexandre Oliva <aoliva@redhat.com> * sysdeps/mips/bits/setjmp.h: n32 has only 6 call-saved fpregs. diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 3029aaf6f9..111e6493d5 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,5 +1,12 @@ 2003-03-21 Ulrich Drepper <drepper@redhat.com> + * sysdeps/unix/sysv/linux/ia64/lowlevellock.h + (__lll_mutex_trylock): Use atomic_compare_and_exchange_val_acq + instead of __lll_compare_and_swap. + * sysdeps/unix/sysv/linux/ia64/pthread_once.c (__pthread_once): + Likewise. + Removed definition if __lll_compare_and_swap. + * cancellation.c: Adjust for new form of compare&exchange macros. * cleanup_defer.c: Likewise. * init.c: Likewise. diff --git a/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h index 6f999221c5..8fa96ed6a2 100644 --- a/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h +++ b/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h @@ -87,14 +87,11 @@ __r10 == -1 ? -__r8 : __r8; \ }) -#define __lll_compare_and_swap(futex, oldval, newval) \ - __sync_val_compare_and_swap_si ((futex), (oldval), (newval)) - static inline int __attribute__ ((always_inline)) __lll_mutex_trylock (int *futex) { - return __lll_compare_and_swap (futex, 0, 1) != 0; + return atomic_compare_and_exchange_val_acq (futex, 1, 0) != 0; } #define lll_mutex_trylock(futex) __lll_mutex_trylock (&(futex)) diff --git a/nptl/sysdeps/unix/sysv/linux/ia64/pthread_once.c b/nptl/sysdeps/unix/sysv/linux/ia64/pthread_once.c index c9e6be16b8..16f1279f8d 100644 --- a/nptl/sysdeps/unix/sysv/linux/ia64/pthread_once.c +++ b/nptl/sysdeps/unix/sysv/linux/ia64/pthread_once.c @@ -52,7 +52,8 @@ __pthread_once (once_control, init_routine) oldval = val; newval = (oldval & 3) | __fork_generation | 1; - val = __lll_compare_and_swap (once_control, oldval, newval); + val = atomic_compare_and_exchange_val_acq (once_control, newval, + oldval); } while (__builtin_expect (val != oldval, 0)); |