diff options
-rw-r--r-- | nptl/ChangeLog | 5 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S | 10 |
2 files changed, 10 insertions, 5 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 5a59e9a029..cd451c83c3 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,8 @@ +2003-06-09 Ulrich Drepper <drepper@redhat.com> + + * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S + (__pthread_cond_signal): Some more tweaks to handle cond_lock!=0. + 2003-06-08 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/s390/sem_wait.c (__new_sem_wait): Make 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 |