aboutsummaryrefslogtreecommitdiff
path: root/nptl/sysdeps/ia64
diff options
context:
space:
mode:
Diffstat (limited to 'nptl/sysdeps/ia64')
-rw-r--r--nptl/sysdeps/ia64/bits/atomic.h26
-rw-r--r--nptl/sysdeps/ia64/pthread_spin_unlock.c6
2 files changed, 16 insertions, 16 deletions
diff --git a/nptl/sysdeps/ia64/bits/atomic.h b/nptl/sysdeps/ia64/bits/atomic.h
index cfccc6a..fab2307 100644
--- a/nptl/sysdeps/ia64/bits/atomic.h
+++ b/nptl/sysdeps/ia64/bits/atomic.h
@@ -76,20 +76,22 @@ typedef uintmax_t uatomic_max_t;
__val = *__memp; \
if (sizeof (*mem) == 4) \
do \
- __oldval = __val; \
- while ((__val \
- = __arch_compare_and_exchange_32_val_acq (__memp, \
- __oldval + __value, \
- __oldval)) \
- != __oldval); \
+ { \
+ __oldval = __val; \
+ __val = __arch_compare_and_exchange_32_val_acq (__memp, \
+ __oldval + __value, \
+ __oldval); \
+ } \
+ while (__builtin_expect (__val != __oldval, 0)); \
else if (sizeof (*mem) == 8) \
do \
- __oldval = __val; \
- while ((__val \
- = __arch_compare_and_exchange_64_val_acq (__memp, \
- __oldval + __value, \
- __oldval)) \
- != __oldval); \
+ { \
+ __oldval = __val; \
+ __val = __arch_compare_and_exchange_64_val_acq (__memp, \
+ __oldval + __value, \
+ __oldval); \
+ } \
+ while (__builtin_expect (__val != __oldval, 0)); \
else \
abort (); \
__oldval + __value; })
diff --git a/nptl/sysdeps/ia64/pthread_spin_unlock.c b/nptl/sysdeps/ia64/pthread_spin_unlock.c
index b3f1ff1..9019188 100644
--- a/nptl/sysdeps/ia64/pthread_spin_unlock.c
+++ b/nptl/sysdeps/ia64/pthread_spin_unlock.c
@@ -17,15 +17,13 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-/* Ugly hack to avoid the declaration of pthread_spin_init. */
-#define pthread_spin_init pthread_spin_init_XXX
#include "pthreadP.h"
-#undef pthread_spin_init
+
int
pthread_spin_unlock (pthread_spinlock_t *lock)
{
- *lock = 0;
+ __sync_lock_release_si ((int *) lock);
return 0;
}
strong_alias (pthread_spin_unlock, pthread_spin_init)