* sysdeps/unix/sysv/linux/i386/i486/sem_post.S (__old_sem_post): New
authorJakub Jelinek <jakub@redhat.com>
Wed, 17 Oct 2007 14:34:44 +0000 (14:34 +0000)
committerJakub Jelinek <jakub@redhat.com>
Wed, 17 Oct 2007 14:34:44 +0000 (14:34 +0000)
routine instead of an alias to __new_sem_post.
2007-10-17  Jakub Jelinek  <jakub@redhat.com>

* sysdeps/unix/sysv/linux/i386/i486/sem_post.S (__old_sem_post): New
routine instead of an alias to __new_sem_post.

nptl/ChangeLog
nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S

index 85edbbe..eb9dd20 100644 (file)
@@ -1,3 +1,8 @@
+2007-10-17  Jakub Jelinek  <jakub@redhat.com>
+
+       * sysdeps/unix/sysv/linux/i386/i486/sem_post.S (__old_sem_post): New
+       routine instead of an alias to __new_sem_post.
+
 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
 
        * init.c (__pthread_initialize_minimal): Initialize word to appease
index 8f656b4..ac045b6 100644 (file)
@@ -86,7 +86,26 @@ __new_sem_post:
        versioned_symbol(libpthread, __new_sem_post, sem_post, GLIBC_2_1)
 #if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_1)
        .global __old_sem_post
-__old_sem_post = __new_sem_post
+       .type   __old_sem_post,@function
+__old_sem_post:
+       pushl   %ebx
+
+       movl    8(%esp), %ebx
+       LOCK
+       addl    $1, (%ebx)
+
+       movl    $SYS_futex, %eax
+       movl    $FUTEX_WAKE, %ecx
+       movl    $1, %edx
+       ENTER_KERNEL
+
+       testl   %eax, %eax
+       js      1b
+
+       xorl    %eax, %eax
+       popl    %ebx
+       ret
+       .size   __old_sem_post,.-__old_sem_post
        compat_symbol(libpthread, __old_sem_post, sem_post, GLIBC_2_0)
 #endif