movl 20(%esp), %ebx
movl 28(%esp), %ebp
-#if cond_lock != 0
- addl $cond_lock, %ebx
-#endif
/* Get internal lock. */
movl $1, %eax
leal 4(%esp), %esi
xorl %ecx, %ecx /* movl $FUTEX_WAIT, %ecx */
movl %edi, %edx
- addl $wakeup_seq-cond_lock, %ebx
+ addl $wakeup_seq, %ebx
movl $SYS_futex, %eax
ENTER_KERNEL
- subl $wakeup_seq-cond_lock, %ebx
+ subl $wakeup_seq, %ebx
movl %eax, %esi
call __pthread_disable_asynccancel
__condvar_cleanup:
pushl %ebx
movl 8(%esp), %ebx
-#if cond_lock != 0
- addl $cond_lock, %ebx
-#endif
/* Get internal lock. */
movl $1, %eax
adcl $0, woken_seq+4(%ebx)
LOCK
+#if cond_lock == 0
decl (%ebx)
+#else
+ decl cond_lock(%ebx)
+#endif
je 2f
#if cond_lock == 0
movl %ebx, %eax
xorl %esi, %esi
movl 16(%esp), %ebx
-#if cond_lock != 0
- addl $cond_lock, %ebx
-#endif
/* Get internal lock. */
movl $1, %eax
movl %esi, %ecx /* movl $FUTEX_WAIT, %ecx */
movl %edi, %edx
- addl $wakeup_seq-cond_lock, %ebx
+ addl $wakeup_seq, %ebx
movl $SYS_futex, %eax
ENTER_KERNEL
- subl $wakeup_seq-cond_lock, %ebx
+ subl $wakeup_seq, %ebx
call __pthread_disable_asynccancel