summaryrefslogtreecommitdiff
path: root/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-03-12 08:57:35 +0000
committerUlrich Drepper <drepper@redhat.com>2003-03-12 08:57:35 +0000
commit35e148cb96ec7e34c206c80888f18f52859b8d5f (patch)
tree5a40b38bab8d8a58badf0aa526d33066ff0a2c65 /nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
parenta3cd7da30f9ac88b43c913ef0c5b5a014e0dd2e7 (diff)
downloadglibc-35e148cb96ec7e34c206c80888f18f52859b8d5f.tar.gz
Update.
2003-03-12 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S (__pthread_rwlock_timedwrlock): Add missing opcode suffix. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S (__pthread_rwlock_timedrdlock): Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S (__pthread_rwlock_wrlock): Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S (__pthread_rwlock_rdlock): Likewise. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: New file. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Return result of lock re-get if it fails.
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S')
-rw-r--r--nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S8
1 files changed, 2 insertions, 6 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
index 831d4f9c90..5b6f1ea0a7 100644
--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
+++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
@@ -126,7 +126,7 @@ __pthread_cond_wait:
testl %eax, %eax
jne 12f
- movq (%rsp), %rdi
+ movq 8(%rsp), %rdi
addq $1, total_seq(%rdi)
/* Install cancellation handler. */
@@ -163,7 +163,6 @@ __pthread_cond_wait:
movq $SYS_futex, %rax
movq %r10, %rsi /* movl $FUTEX_WAIT, %ecx */
syscall
- subl $wakeup_seq-cond_lock, %ebx
movq (%rsp), %rdi
callq __pthread_disable_asynccancel
@@ -202,7 +201,7 @@ __pthread_cond_wait:
/* Remove cancellation handler. */
11: movq 32+CLEANUP_PREV(%rsp), %rdx
- movq %rdx, %gs:CLEANUP
+ movq %rdx, %fs:CLEANUP
movq 16(%rsp), %rdi
callq __pthread_mutex_lock_internal
@@ -227,9 +226,6 @@ __pthread_cond_wait:
addq $cond_lock, %rdi
#endif
callq __lll_mutex_unlock_wake
-#if cond_lock != 0
- subq $cond_lock, %rdi
-#endif
jmp 4b
/* Locking in loop failed. */