]> sourceware.org Git - glibc.git/commitdiff
* sysdeps/alpha/bits/atomic.h (__arch_compare_and_exchange_bool_*_int): ...
authorRichard Henderson <rth@redhat.com>
Mon, 30 Jun 2003 23:21:38 +0000 (23:21 +0000)
committerRichard Henderson <rth@redhat.com>
Mon, 30 Jun 2003 23:21:38 +0000 (23:21 +0000)
* sysdeps/alpha/bits/atomic.h (__arch_compare_and_exchange_bool_*_int):
Invert the sense of the return value.
(__arch_exchange_16_int): Fix paste-o.
(__arch_exchange_{32,64}_int): Fix think-o.

* sysdeps/unix/sysv/linux/alpha/clone.S: Load child_tid properly.

2003-06-30  Richard Henderson  <rth@redhat.com>

ChangeLog
sysdeps/alpha/bits/atomic.h

index abd3d3c09d3db1eb963097792b0cf491b87930af..1a7a9b8227945911705d73baef519934ae510a2d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2003-06-30  Richard Henderson  <rth@redhat.com>
+
+       * sysdeps/alpha/bits/atomic.h (__arch_compare_and_exchange_bool_*_int):
+       Invert the sense of the return value.
+       (__arch_exchange_16_int): Fix paste-o.
+       (__arch_exchange_{32,64}_int): Fix think-o.
+
+       * sysdeps/unix/sysv/linux/alpha/clone.S: Load child_tid properly.
+
 2003-06-30  Richard Henderson  <rth@redhat.com>
 
        * include/sys/resource.h (__getrusage): Mark hidden.
index ead76a75aa6ccaf5cddd2cbe87278617ba6402ed..073e6508fc646a77520ee0c619ae326ac73b3223 100644 (file)
@@ -151,27 +151,27 @@ typedef uintmax_t uatomic_max_t;
        : "memory");                                                    \
 })
 
-/* For all "bool" routines, we return true if exchange succesful.  */
+/* For all "bool" routines, we return FALSE if exchange succesful.  */
 
 #define __arch_compare_and_exchange_bool_8_int(mem, new, old, mb1, mb2)        \
 ({ unsigned long __prev; int __cmp;                                    \
    __arch_compare_and_exchange_xxx_8_int(mem, new, old, mb1, mb2);     \
-   __cmp; })
+   !__cmp; })
 
 #define __arch_compare_and_exchange_bool_16_int(mem, new, old, mb1, mb2) \
 ({ unsigned long __prev; int __cmp;                                    \
    __arch_compare_and_exchange_xxx_16_int(mem, new, old, mb1, mb2);    \
-   __cmp; })
+   !__cmp; })
 
 #define __arch_compare_and_exchange_bool_32_int(mem, new, old, mb1, mb2) \
 ({ unsigned long __prev; int __cmp;                                    \
    __arch_compare_and_exchange_xxx_32_int(mem, new, old, mb1, mb2);    \
-   __cmp; })
+   !__cmp; })
 
 #define __arch_compare_and_exchange_bool_64_int(mem, new, old, mb1, mb2) \
 ({ unsigned long __prev; int __cmp;                                    \
    __arch_compare_and_exchange_xxx_64_int(mem, new, old, mb1, mb2);    \
-   __cmp; })
+   !__cmp; })
 
 /* For all "val" routines, return the old value whether exchange
    successful or not.  */
@@ -247,7 +247,7 @@ typedef uintmax_t uatomic_max_t;
   unsigned long __ret, __tmp, __addr64, __sval;                                \
   __asm__ __volatile__ (                                               \
                mb1                                                     \
-       "       andnot  %[__addr8],7,%[__addr64]\n"                     \
+       "       andnot  %[__addr16],7,%[__addr64]\n"                    \
        "       inswl   %[__value],%[__addr16],%[__sval]\n"             \
        "1:     ldq_l   %[__tmp],0(%[__addr64])\n"                      \
        "       extwl   %[__tmp],%[__addr16],%[__ret]\n"                \
@@ -271,13 +271,14 @@ typedef uintmax_t uatomic_max_t;
   __asm__ __volatile__ (                                               \
                mb1                                                     \
        "1:     ldl_l   %[__ret],%[__mem]\n"                            \
-       "       mov     %[__ret],%[__tmp]\n"                            \
+       "       mov     %[__val],%[__tmp]\n"                            \
        "       stl_c   %[__tmp],%[__mem]\n"                            \
        "       beq     %[__tmp],1b\n"                                  \
                mb2                                                     \
        : [__ret] "=&r" (__ret),                                        \
          [__tmp] "=&r" (__tmp)                                         \
-       : [__mem] "m" (*(mem))                                          \
+       : [__mem] "m" (*(mem)),                                         \
+         [__val] "Ir" (value)                                          \
        : "memory");                                                    \
   __ret; })
 
@@ -287,13 +288,14 @@ typedef uintmax_t uatomic_max_t;
   __asm__ __volatile__ (                                               \
                mb1                                                     \
        "1:     ldq_l   %[__ret],%[__mem]\n"                            \
-       "       mov     %[__ret],%[__tmp]\n"                            \
+       "       mov     %[__val],%[__tmp]\n"                            \
        "       stq_c   %[__tmp],%[__mem]\n"                            \
        "       beq     %[__tmp],1b\n"                                  \
                mb2                                                     \
        : [__ret] "=&r" (__ret),                                        \
          [__tmp] "=&r" (__tmp)                                         \
-       : [__mem] "m" (*(mem))                                          \
+       : [__mem] "m" (*(mem)),                                         \
+         [__val] "Ir" (value)                                          \
        : "memory");                                                    \
   __ret; })
 
This page took 0.051993 seconds and 5 git commands to generate.