diff options
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S index 280dc2fe27..71e96d2228 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2003, 2005, 2007 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2002. @@ -20,7 +20,6 @@ #include <sysdep.h> #include <shlib-compat.h> #include <pthread-errnos.h> -#include <structsem.h> #ifndef UP # define LOCK lock @@ -41,27 +40,19 @@ __new_sem_post: pushl %ebx movl 8(%esp), %ebx - + movl $1, %edx LOCK -#if VALUE == 0 - addl $1, (%ebx) -#else - addl $1, VALUE(%ebx) -#endif + xaddl %edx, (%ebx) - cmpl $0, NWAITERS(%ebx) - je 2f - - movl $FUTEX_WAKE, %ecx - orl PRIVATE(%ebx), %ecx - movl $1, %edx movl $SYS_futex, %eax + movl $FUTEX_WAKE, %ecx + addl $1, %edx ENTER_KERNEL testl %eax, %eax js 1f -2: xorl %eax, %eax + xorl %eax, %eax popl %ebx ret |