about summary refs log tree commit diff
path: root/nptl
diff options
context:
space:
mode:
Diffstat (limited to 'nptl')
-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