* 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/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>
This commit is contained in:
parent
cbdce76606
commit
bbf1f957c7
@ -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.
|
||||
|
@ -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; })
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user