summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2007-05-30 04:08:13 +0000
committerUlrich Drepper <drepper@redhat.com>2007-05-30 04:08:13 +0000
commit0154658d3db3ac2880c44bcc85c6fe47f4bdbb7c (patch)
treef975159df12f61c47931c808adb95af33cd8aace
parent4b5e7304ed3cd6da133f82b6daf8c43b76ce5b50 (diff)
* sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Checking
whether there are more than one thread makes no sense here since we only call the slow path if the locks are taken. * sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S: Likewise.
-rw-r--r--nptl/ChangeLog5
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S10
-rw-r--r--nptl/sysdeps/unix/sysv/linux/internaltypes.h2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S10
4 files changed, 6 insertions, 21 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 9d71dccd1b..b757f48df5 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,5 +1,10 @@
2007-05-29 Ulrich Drepper <drepper@redhat.com>
+ * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Checking
+ whether there are more than one thread makes no sense here since
+ we only call the slow path if the locks are taken.
+ * sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S: Likewise.
+
* sysdeps/unix/sysv/linux/internaltypes.h: Introduce
COND_NWAITERS_SHIFT.
* pthread_cond_destroy.c: Use COND_NWAITERS_SHIFT instead of
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S
index f246711489..830f628578 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S
@@ -19,16 +19,6 @@
#include <kernel-features.h>
-/* In libc.so we do not unconditionally use the lock prefix. Only if
- the application is using threads. */
-#ifndef UP
-# define LOCK \
- cmpl $0, %gs:MULTIPLE_THREADS_OFFSET; \
- je 0f; \
- lock; \
-0:
-#endif
-
/* All locks in libc are private. Use the kernel feature if possible. */
#define FUTEX_PRIVATE_FLAG 128
#ifdef __ASSUME_PRIVATE_FUTEX
diff --git a/nptl/sysdeps/unix/sysv/linux/internaltypes.h b/nptl/sysdeps/unix/sysv/linux/internaltypes.h
index dfd53a02b6..add20b6f72 100644
--- a/nptl/sysdeps/unix/sysv/linux/internaltypes.h
+++ b/nptl/sysdeps/unix/sysv/linux/internaltypes.h
@@ -80,7 +80,7 @@ struct pthread_condattr
of bits needed to represent the ID of the clock. COND_NWAITERS_SHIFT
is the number of bits reserved for other purposes like the clock. */
#define COND_CLOCK_BITS 1
-#define COND_NWAITERS_SHIFT 8
+#define COND_NWAITERS_SHIFT 1
/* Read-write lock variable attribute data structure. */
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S b/nptl/sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S
index 21bf58cbbd..3265eee0ed 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S
@@ -19,16 +19,6 @@
#include <kernel-features.h>
-/* In libc.so we do not unconditionally use the lock prefix. Only if
- the application is using threads. */
-#ifndef UP
-# define LOCK \
- cmpl $0, __libc_multiple_threads(%rip); \
- je 0f; \
- lock; \
-0:
-#endif
-
/* All locks in libc are private. Use the kernel feature if possible. */
#define FUTEX_PRIVATE_FLAG 128
#ifdef __ASSUME_PRIVATE_FUTEX