about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@redhat.com>2009-08-10 08:10:11 -0700
committerUlrich Drepper <drepper@redhat.com>2009-08-10 08:10:11 -0700
commitec4922395b05b428cb2cd17ea8118087e0ed6df4 (patch)
treebabd0b2fcd81ac7d50f554c5a46d3e4e4b3f54e9
parentefa0569d2bfdbb7367fce42b1c99821b85d2d3ba (diff)
downloadglibc-ec4922395b05b428cb2cd17ea8118087e0ed6df4.tar.gz
glibc-ec4922395b05b428cb2cd17ea8118087e0ed6df4.tar.xz
glibc-ec4922395b05b428cb2cd17ea8118087e0ed6df4.zip
Fix check for PI mutex in x86-64 pthread_cond_signal
Register eax contains the syscall number, use a different one instead.
-rw-r--r--nptl/ChangeLog6
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S6
2 files changed, 9 insertions, 3 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 5be464e2f2..092962fab6 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,9 @@
+2009-08-10  Andreas Schwab  <schwab@redhat.com>
+
+	* sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
+	(__pthread_cond_signal): Don't clobber register used for syscall
+	number.
+
 2009-08-08  Ulrich Drepper  <drepper@redhat.com>
 
 	* sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait):
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
index 4d001eec7f..d1d83a84f9 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
@@ -64,9 +64,9 @@ __pthread_cond_signal:
 
 	/* Get the address of the mutex used.  */
 	movq    dep_mutex(%r8), %rcx
-	movl	MUTEX_KIND(%rcx), %eax
-	andl	$(ROBUST_BIT|PI_BIT), %eax
-	cmpl	$PI_BIT, %eax
+	movl	MUTEX_KIND(%rcx), %r11d
+	andl	$(ROBUST_BIT|PI_BIT), %r11d
+	cmpl	$PI_BIT, %r11d
 	je	9f
 
 #ifdef __ASSUME_PRIVATE_FUTEX