]> sourceware.org Git - glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Fri, 3 Jan 2003 08:14:47 +0000 (08:14 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 3 Jan 2003 08:14:47 +0000 (08:14 +0000)
* sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S
(__pthread_cond_wait): Don't save cancellation mode and seq value
in same location.

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

index 1908a789866fb15cb41b2b85eb8e9ba8cd20757a..b9437ab3296a407bef3964c2257c4aff282f3150 100644 (file)
@@ -1,5 +1,9 @@
 2003-01-03  Ulrich Drepper  <drepper@redhat.com>
 
+       * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S
+       (__pthread_cond_wait): Don't save cancellation mode and seq value
+       in same location.
+
        * herrno.c (__h_errno_location): Don't define as weak.
 
 2003-01-02  Jakub Jelinek  <jakub@redhat.com>
index 1cbf2ea97a772ddae1b5be86f008619ae4ea7ea2..0187bf82531fdb3f5a953e251d416233c40d047f 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -141,8 +141,8 @@ __pthread_cond_wait:
        /* Get and store current wakeup_seq value.  */
        movl    wakeup_seq(%ebx), %edi
        movl    wakeup_seq+4(%ebx), %edx
-       movl    %edi, (%esp)
-       movl    %edx, 4(%esp)
+       movl    %edi, 4(%esp)
+       movl    %edx, 8(%esp)
 
        /* Unlock.  */
 8:     LOCK
@@ -182,10 +182,10 @@ __pthread_cond_wait:
        movl    wakeup_seq(%ebx), %edi
        movl    wakeup_seq+4(%ebx), %edx
 
-       cmpl    4(%esp), %ecx
+       cmpl    8(%esp), %ecx
        ja      7f
        jb      8b
-       cmpl    (%esp), %eax
+       cmpl    4(%esp), %eax
        jb      8b
 
 7:     cmpl    %ecx, %edx
@@ -503,7 +503,11 @@ __pthread_cond_signal:
        /* Get internal lock.  */
        movl    $1, %eax
        LOCK
+#if cond_lock == 0
+       xaddl   %eax, (%ebx)
+#else
        xaddl   %eax, cond_lock(%ebx)
+#endif
        testl   %eax, %eax
        jne     1f
 
@@ -531,7 +535,11 @@ __pthread_cond_signal:
 
        /* Unlock.  */
 4:     LOCK
+#if cond_lock == 0
+       decl    (%ebx)
+#else
        decl    cond_lock(%ebx)
+#endif
        jne     5f
 
 6:     xorl    %eax, %eax
@@ -580,7 +588,11 @@ __pthread_cond_broadcast:
        /* Get internal lock.  */
        movl    $1, %eax
        LOCK
+#if cond_lock == 0
+       xaddl   %eax, (%ebx)
+#else
        xaddl   %eax, cond_lock(%ebx)
+#endif
        testl   %eax, %eax
        jne     1f
 
@@ -608,7 +620,11 @@ __pthread_cond_broadcast:
 
        /* Unlock.  */
 4:     LOCK
+#if cond_lock == 0
+       decl    (%ebx)
+#else
        decl    cond_lock(%ebx)
+#endif
        jne     5f
 
 6:     xorl    %eax, %eax
This page took 0.057886 seconds and 5 git commands to generate.