summaryrefslogtreecommitdiff
path: root/nptl/sysdeps/unix/sysv/linux/powerpc
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2003-03-19 03:34:48 +0000
committerRoland McGrath <roland@gnu.org>2003-03-19 03:34:48 +0000
commit043ad426e7927a49a872e915c3cde88b682aea71 (patch)
tree5bb6178c065a279b56573a3fca4b2d06b45c2f32 /nptl/sysdeps/unix/sysv/linux/powerpc
parent8a477363f4c791c64c6a7e4c2c5f961863db601d (diff)
* Versions (libpthread: GLIBC_2.2): Remove
pthread_barrierattr_getpshared, never really existed. (libpthread: GLIBC_2.0): Move __pthread_initialize to ... (libpthread: GLIBC_PRIVATE): ... here.
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/powerpc')
-rw-r--r--nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
index bfd109f080..2b58d2e63a 100644
--- a/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
+++ b/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
@@ -99,6 +99,18 @@
__val; \
})
+/* 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" \
+ " stwcx. %2,0,%3\n" \
+ " bne- 1b" \
+ : "=&r" (__val), "=m" (*futex) \
+ : "r" (futex), "r" (newval), "1" (*futex) \
+ : "cr0"); \
+ __val; })
+
+
extern void __lll_lock_wait (int *futex, int val) attribute_hidden;
#define lll_mutex_lock(lock) \