diff options
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.S | 7 |
1 files changed, 5 insertions, 2 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 d8681ebe6b..e572874d7a 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 @@ -117,14 +117,17 @@ __pthread_cond_wait: +--------------------------+ */ - /* Prepare structure passed to cancellation handler. */ + cmpq $-1, dep_mutex(%rdi) + + /* Prepare structure passed to cancellation handler. */ movq %rdi, 8(%rsp) movq %rsi, 16(%rsp) + je 15f movq %rsi, dep_mutex(%rdi) /* Get internal lock. */ - movl $1, %esi +15: movl $1, %esi xorl %eax, %eax LOCK #if cond_lock == 0 |