diff options
Diffstat (limited to 'nptl/sysdeps')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S index 4b4fc051cb..c89851d373 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S @@ -65,6 +65,9 @@ __pthread_cond_signal: movl total_seq+4(%edi), %eax movl total_seq(%edi), %ecx cmpl 4(%ebx), %eax +#if cond_lock != 0 + leal cond_lock(%edi), %edi +#endif ja 3f jb 4f cmpl (%ebx), %ecx @@ -90,13 +93,10 @@ __pthread_cond_signal: testl %eax, %eax jne 5f - /* Unlock. */ + /* Unlock. Note that at this point %edi always points to + cond_lock. */ 4: LOCK -#if cond_lock == 0 subl $1, (%edi) -#else - subl $1, cond_lock(%edi) -#endif jne 5f 6: xorl %eax, %eax |