diff options
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S index 06821ad376..1049e0f4dd 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S @@ -51,12 +51,13 @@ __pthread_cond_broadcast: movl 16(%esp), %ebx /* Get internal lock. */ - movl $1, %eax + movl $1, %edx + xorl %eax, %eax LOCK #if cond_lock == 0 - xaddl %eax, (%ebx) + cmpxchgl %edx, (%ebx) #else - xaddl %eax, cond_lock(%ebx) + cmpxchgl %edx, cond_lock(%ebx) #endif testl %eax, %eax jne 1f |