Make x86-64 pthread_cond_timedwait more robust.

It just happens that __pthread_enable_asynccancel doesn't modify the $rdi
register.  But this isn't guaranteed.  Hence we reload the register after
the calls.
This commit is contained in:
Ulrich Drepper 2009-07-19 14:54:56 -07:00
parent e2dca2fea3
commit 515a8908ce
2 changed files with 7 additions and 0 deletions

View file

@ -1,3 +1,8 @@
2009-07-19 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
(__pthread_cond_timedwait): Make more robust.
2009-07-18 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S

View file

@ -153,6 +153,7 @@ __pthread_cond_timedwait:
.LcleanupSTART1:
34: callq __pthread_enable_asynccancel
movl %eax, (%rsp)
movq 8(%rsp), %rdi
movq %r13, %r10
cmpq $-1, dep_mutex(%rdi)
@ -456,6 +457,7 @@ __pthread_cond_timedwait:
.LcleanupSTART2:
4: callq __pthread_enable_asynccancel
movl %eax, (%rsp)
movq 8(%rsp), %rdi
leaq 32(%rsp), %r10
cmpq $-1, dep_mutex(%rdi)