]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
* sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
authorUlrich Drepper <drepper@redhat.com>
Sun, 27 May 2007 18:56:02 +0000 (18:56 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sun, 27 May 2007 18:56:02 +0000 (18:56 +0000)
* sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
Likewise.
* sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
Likewise.
* sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
* sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.

nptl/ChangeLog
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S
nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S
nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S
nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S
nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S
nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S
nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S

index 9f57cc4de1b9b21386ef28030a1ab3a2f3dbb9e6..bb4a86ba058486f0014abdc377d585ef73f9b127 100644 (file)
        Likewise.
        * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: Likewise.
        * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
+       * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
+       * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
+       Likewise.
+       * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
+       Likewise.
+       * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
+       * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
 
 2007-05-26  Ulrich Drepper  <drepper@redhat.com>
 
index db0639d21c5f4682b60ce0b975e643cea5b708be..763c14b08f56425741c66c50bae82edf4bf76c73 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -77,8 +77,20 @@ __pthread_rwlock_rdlock:
 #endif
        jne     10f
 
-11:    addl    $READERS_WAKEUP, %ebx
-       movl    %esi, %ecx      /* movl $FUTEX_WAIT, %ecx */
+11:
+#if __ASSUME_PRIVATE_FUTEX
+       movl    $FUTEX_PRIVATE_FLAG|FUTEX_WAIT, %ecx
+       xorl    PSHARED(%ebx), %ecx
+#else
+# if FUTEX_WAIT == 0
+       movl    PSHARED(%ebx), %ecx
+# else
+       movl    $FUTEX_WAIT, %ecx
+       orl     PSHARED(%ebx), %ecx
+# endif
+       xorl    %gs:PRIVATE_FUTEX, %ecx
+#endif
+       addl    $READERS_WAKEUP, %ebx
        movl    $SYS_futex, %eax
        ENTER_KERNEL
 
index eb5665b43254748421264d9eb1661c4fe33b8f42..a6d3db5302de9b875c7b65a2b40a22d749406b88 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -108,8 +108,20 @@ pthread_rwlock_timedrdlock:
        /* Futex call.  */
        movl    %ecx, (%esp)    /* Store relative timeout.  */
        movl    %edx, 4(%esp)
+
        movl    %esi, %edx
-       xorl    %ecx, %ecx      /* movl $FUTEX_WAIT, %ecx */
+#if __ASSUME_PRIVATE_FUTEX
+       movl    $FUTEX_PRIVATE_FLAG|FUTEX_WAIT, %ecx
+       xorl    PSHARED(%ebp), %ecx
+#else
+# if FUTEX_WAIT == 0
+       movl    PSHARED(%ebp), %ecx
+# else
+       movl    $FUTEX_WAIT, %ecx
+       orl     PSHARED(%ebp), %ecx
+# endif
+       xorl    %gs:PRIVATE_FUTEX, %ecx
+#endif
        movl    %esp, %esi
        leal    READERS_WAKEUP(%ebp), %ebx
        movl    $SYS_futex, %eax
index d9db77ba053a1f7730500dc0dd1a2ac7eb4e367c..6c6e2faf50daeecb0079116aaa4c12a875ff81ad 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -106,8 +106,20 @@ pthread_rwlock_timedwrlock:
        /* Futex call.  */
        movl    %ecx, (%esp)    /* Store relative timeout.  */
        movl    %edx, 4(%esp)
+
        movl    %esi, %edx
-       xorl    %ecx, %ecx      /* movl $FUTEX_WAIT, %ecx */
+#if __ASSUME_PRIVATE_FUTEX
+       movl    $FUTEX_PRIVATE_FLAG|FUTEX_WAIT, %ecx
+       xorl    PSHARED(%ebp), %ecx
+#else
+# if FUTEX_WAIT == 0
+       movl    PSHARED(%ebp), %ecx
+# else
+       movl    $FUTEX_WAIT, %ecx
+       orl     PSHARED(%ebp), %ecx
+# endif
+       xorl    %gs:PRIVATE_FUTEX, %ecx
+#endif
        movl    %esp, %esi
        leal    WRITERS_WAKEUP(%ebp), %ebx
        movl    $SYS_futex, %eax
index 64aac3255adce579d86e5fe934a135ec8e3f75d8..122ac7646e3b028a6153875867247e98467c06b7 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -61,9 +61,8 @@ __pthread_rwlock_unlock:
 
 5:     movl    $0, WRITER(%edi)
 
-       movl    $1, %ecx
+       movl    $1, %edx
        leal    WRITERS_WAKEUP(%edi), %ebx
-       movl    %ecx, %edx
        cmpl    $0, WRITERS_QUEUED(%edi)
        jne     0f
 
@@ -83,7 +82,16 @@ __pthread_rwlock_unlock:
 #endif
        jne     7f
 
-8:     movl    $SYS_futex, %eax
+8:
+#if __ASSUME_PRIVATE_FUTEX
+       movl    $FUTEX_PRIVATE_FLAG|FUTEX_WAKE, %ecx
+       xorl    PSHARED(%edi), %ecx
+#else
+       movl    $FUTEX_WAKE, %ecx
+       orl     PSHARED(%edi), %ecx
+       xorl    %gs:PRIVATE_FUTEX, %ecx
+#endif
+       movl    $SYS_futex, %eax
        ENTER_KERNEL
 
        xorl    %eax, %eax
index ea9cc170dbccc826759465a224dfdf5913455c26..9083419a4b150980e1e037c5cbd3b0ac59eab1fb 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -75,8 +75,20 @@ __pthread_rwlock_wrlock:
 #endif
        jne     10f
 
-11:    addl    $WRITERS_WAKEUP, %ebx
-       movl    %esi, %ecx      /* movl $FUTEX_WAIT, %ecx */
+11:
+#if __ASSUME_PRIVATE_FUTEX
+       movl    $FUTEX_PRIVATE_FLAG|FUTEX_WAIT, %ecx
+       xorl    PSHARED(%ebx), %ecx
+#else
+# if FUTEX_WAIT == 0
+       movl    PSHARED(%ebx), %ecx
+# else
+       movl    $FUTEX_WAIT, %ecx
+       orl     PSHARED(%ebx), %ecx
+# endif
+       xorl    %gs:PRIVATE_FUTEX, %ecx
+#endif
+       addl    $WRITERS_WAKEUP, %ebx
        movl    $SYS_futex, %eax
        ENTER_KERNEL
 
index 5e9d8fb1d6a6bfe758e75597fa729c4851edc2c8..da98ab3d495c0db9636086ecb44820d19f24221a 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
 #include <sysdep.h>
 #include <lowlevelrwlock.h>
 #include <pthread-errnos.h>
+#include <kernel-features.h>
 
 
 #define SYS_futex              202
 #define FUTEX_WAIT             0
 #define FUTEX_WAKE             1
+#define FUTEX_PRIVATE_FLAG     128
 
 #ifndef UP
 # define LOCK lock
@@ -73,12 +75,20 @@ __pthread_rwlock_rdlock:
 #endif
        jne     10f
 
-11:    addq    $READERS_WAKEUP, %rdi
-#if FUTEX_WAIT == 0
-       xorl    %esi, %esi
+11:
+#if __ASSUME_PRIVATE_FUTEX
+       movl    $FUTEX_PRIVATE_FLAG|FUTEX_WAIT, %esi
+       xorl    PSHARED(%rdi), %esi
 #else
+# if FUTEX_WAIT == 0
+       movl    PSHARED(%rdi), %esi
+# else
        movl    $FUTEX_WAIT, %esi
+       orl     PSHARED(%rdi), %esi
+# endif
+       xorl    %fs:PRIVATE_FUTEX, %esi
 #endif
+       addq    $READERS_WAKEUP, %rdi
        movl    $SYS_futex, %eax
        syscall
 
index b44660418a450e290bd17d3e1af270e0fda37da0..19ad27aab8104d6c4fa6e5c1c47f2c35ef56c12b 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -112,10 +112,17 @@ pthread_rwlock_timedrdlock:
        movq    %rcx, (%rsp)    /* Store relative timeout.  */
        movq    %rdi, 8(%rsp)
 
-#if FUTEX_WAIT == 0
-       xorl    %esi, %esi
+#if __ASSUME_PRIVATE_FUTEX
+       movl    $FUTEX_PRIVATE_FLAG|FUTEX_WAIT, %esi
+       xorl    PSHARED(%rdi), %esi
 #else
+# if FUTEX_WAIT == 0
+       movl    PSHARED(%r12), %esi
+# else
        movl    $FUTEX_WAIT, %esi
+       orl     PSHARED(%r12), %esi
+# endif
+       xorl    %fs:PRIVATE_FUTEX, %esi
 #endif
        movq    %rsp, %r10
        movl    %r14d, %edx
index 525e5b6b9343598351f6fa9a7cfb6e288d590ae8..4c3e7413a89acbacc3a1513749b3c740d4f80443 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -108,10 +108,17 @@ pthread_rwlock_timedwrlock:
        movq    %rcx, (%rsp)    /* Store relative timeout.  */
        movq    %rdi, 8(%rsp)
 
-#if FUTEX_WAIT == 0
-       xorl    %esi, %esi
+#if __ASSUME_PRIVATE_FUTEX
+       movl    $FUTEX_PRIVATE_FLAG|FUTEX_WAIT, %esi
+       xorl    PSHARED(%rdi), %esi
 #else
+# if FUTEX_WAIT == 0
+       movl    PSHARED(%r12), %esi
+# else
        movl    $FUTEX_WAIT, %esi
+       orl     PSHARED(%r12), %esi
+# endif
+       xorl    %fs:PRIVATE_FUTEX, %esi
 #endif
        movq    %rsp, %r10
        movl    %r14d, %edx
index 4ac9ae62eaf44c2e0fdd53d6939c9cc0eeb7720f..bf688252c8c0ebe1d47b5a100f294294d61da2b2 100644 (file)
@@ -56,8 +56,8 @@ __pthread_rwlock_unlock:
 
 5:     movl    $0, WRITER(%rdi)
 
+       movl    $1, %edx
        leaq    WRITERS_WAKEUP(%rdi), %r10
-       movq    %rsi, %rdx
        cmpl    $0, WRITERS_QUEUED(%rdi)
        jne     0f
 
index 0e82f890aaf2437baaae078cfc00e66e8f346955..46d97e033eee6eb6d24bf7e48e69b527447a834e 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -71,12 +71,20 @@ __pthread_rwlock_wrlock:
 #endif
        jne     10f
 
-11:    addq    $WRITERS_WAKEUP, %rdi
-#if FUTEX_WAIT == 0
-       xorl    %esi, %esi
+11:
+#if __ASSUME_PRIVATE_FUTEX
+       movl    $FUTEX_PRIVATE_FLAG|FUTEX_WAIT, %esi
+       xorl    PSHARED(%rdi), %esi
 #else
+# if FUTEX_WAIT == 0
+       movl    PSHARED(%rdi), %esi
+# else
        movl    $FUTEX_WAIT, %esi
+       orl     PSHARED(%rdi), %esi
+# endif
+       xorl    %fs:PRIVATE_FUTEX, %esi
 #endif
+       addq    $WRITERS_WAKEUP, %rdi
        movl    $SYS_futex, %eax
        syscall