mirror of git://sourceware.org/git/glibc.git
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:
parent
e2dca2fea3
commit
515a8908ce
|
|
@ -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>
|
2009-07-18 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S
|
* sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S
|
||||||
|
|
|
||||||
|
|
@ -153,6 +153,7 @@ __pthread_cond_timedwait:
|
||||||
.LcleanupSTART1:
|
.LcleanupSTART1:
|
||||||
34: callq __pthread_enable_asynccancel
|
34: callq __pthread_enable_asynccancel
|
||||||
movl %eax, (%rsp)
|
movl %eax, (%rsp)
|
||||||
|
movq 8(%rsp), %rdi
|
||||||
|
|
||||||
movq %r13, %r10
|
movq %r13, %r10
|
||||||
cmpq $-1, dep_mutex(%rdi)
|
cmpq $-1, dep_mutex(%rdi)
|
||||||
|
|
@ -456,6 +457,7 @@ __pthread_cond_timedwait:
|
||||||
.LcleanupSTART2:
|
.LcleanupSTART2:
|
||||||
4: callq __pthread_enable_asynccancel
|
4: callq __pthread_enable_asynccancel
|
||||||
movl %eax, (%rsp)
|
movl %eax, (%rsp)
|
||||||
|
movq 8(%rsp), %rdi
|
||||||
|
|
||||||
leaq 32(%rsp), %r10
|
leaq 32(%rsp), %r10
|
||||||
cmpq $-1, dep_mutex(%rdi)
|
cmpq $-1, dep_mutex(%rdi)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue