diff options
author | Richard Henderson <rth@redhat.com> | 2004-01-13 09:15:58 +0000 |
---|---|---|
committer | Richard Henderson <rth@redhat.com> | 2004-01-13 09:15:58 +0000 |
commit | 141749ca169d3a5f3a328d3cb91473e3af4256b1 (patch) | |
tree | 71d67ad08bbdd27d1e3c93665d0c9d03b337e919 /sysdeps/alpha/bits | |
parent | 1705f0a392f382bf3facda8d95cc7547ef708bf7 (diff) | |
download | glibc-141749ca169d3a5f3a328d3cb91473e3af4256b1.tar glibc-141749ca169d3a5f3a328d3cb91473e3af4256b1.tar.gz glibc-141749ca169d3a5f3a328d3cb91473e3af4256b1.tar.bz2 glibc-141749ca169d3a5f3a328d3cb91473e3af4256b1.zip |
* sysdeps/alpha/bits/atomic.h (__arch_compare_and_exchange_xxx_8_int): Cast old up to uint64_t before back down to inner width. (__arch_compare_and_exchange_xxx_16_int): Likewise. (__arch_compare_and_exchange_xxx_32_int): Likewise. (__arch_compare_and_exchange_xxx_64_int): Likewise. (__arch_compare_and_exchange_val_8_int): Cast result to the type of the memory. (__arch_compare_and_exchange_val_16_int): Likewise. (__arch_compare_and_exchange_val_32_int): Likewise. (__arch_compare_and_exchange_val_64_int): Likewise. (atomic_compare_and_exchange_bool_acq): Use __atomic_bool_bysize. (atomic_compare_and_exchange_bool_rel): Likewise.
* sysdeps/unix/alpha/sysdep.h: Select inline_syscall_r0_asm
based on HAVE___THREAD instead of USE_TLS.
* sysdeps/unix/sysv/linux/alpha/adjtime.c (ADJTIMEX32): New.
(__adjtimex_tv64): Use it.
* sysdeps/unix/sysv/linux/alpha/semctl.c (__new_semctl): Cast
to void* rather than directly to the compatibility structure type.
* sysdeps/unix/sysv/linux/alpha/shmctl.c (__new_shmctl): Likewise.
* sysdeps/unix/sysv/linux/alpha/sigaction.c (struct kernel_sigaction):
Forward declare.
* sysdeps/alpha/bits/atomic.h (__arch_compare_and_exchange_xxx_8_int):
Cast old up to uint64_t before back down to inner width.
(__arch_compare_and_exchange_xxx_16_int): Likewise.
(__arch_compare_and_exchange_xxx_32_int): Likewise.
(__arch_compare_and_exchange_xxx_64_int): Likewise.
(__arch_compare_and_exchange_val_8_int): Cast result to
the type of the memory.
(__arch_compare_and_exchange_val_16_int): Likewise.
(__arch_compare_and_exchange_val_32_int): Likewise.
(__arch_compare_and_exchange_val_64_int): Likewise.
(atomic_compare_and_exchange_bool_acq): Use __atomic_bool_bysize.
(atomic_compare_and_exchange_bool_rel): Likewise.
* sysdeps/unix/alpha/sysdep.h: Select inline_syscall_r0_asm
based on HAVE___THREAD instead of USE_TLS.
* sysdeps/unix/sysv/linux/alpha/adjtime.c (ADJTIMEX32): New.
(__adjtimex_tv64): Use it.
* sysdeps/unix/sysv/linux/alpha/semctl.c (__new_semctl): Cast
to void* rather than directly to the compatibility structure type.
* sysdeps/unix/sysv/linux/alpha/shmctl.c (__new_shmctl): Likewise.
* sysdeps/unix/sysv/linux/alpha/sigaction.c (struct kernel_sigaction):
Forward declare.
2004-01-13 Richard Henderson <rth@redhat.com>
Paolo Bonzini <bonzini@gnu.org>
Compare the node sets after all the other comparisons.
the old thread-m.h header too.
Diffstat (limited to 'sysdeps/alpha/bits')
-rw-r--r-- | sysdeps/alpha/bits/atomic.h | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/sysdeps/alpha/bits/atomic.h b/sysdeps/alpha/bits/atomic.h index 073e6508fc..36a740c758 100644 --- a/sysdeps/alpha/bits/atomic.h +++ b/sysdeps/alpha/bits/atomic.h @@ -78,7 +78,7 @@ typedef uintmax_t uatomic_max_t; [__cmp] "=&r" (__cmp), \ [__addr64] "=&r" (__addr64) \ : [__addr8] "r" (mem), \ - [__old] "Ir" ((uint64_t)(uint8_t)(old)), \ + [__old] "Ir" ((uint64_t)(uint8_t)(uint64_t)(old)), \ [__new] "r" (new) \ : "memory"); \ }) @@ -106,7 +106,7 @@ typedef uintmax_t uatomic_max_t; [__cmp] "=&r" (__cmp), \ [__addr64] "=&r" (__addr64) \ : [__addr16] "r" (mem), \ - [__old] "Ir" ((uint64_t)(uint16_t)(old)), \ + [__old] "Ir" ((uint64_t)(uint16_t)(uint64_t)(old)), \ [__new] "r" (new) \ : "memory"); \ }) @@ -126,7 +126,7 @@ typedef uintmax_t uatomic_max_t; : [__prev] "=&r" (__prev), \ [__cmp] "=&r" (__cmp) \ : [__mem] "m" (*(mem)), \ - [__old] "Ir" ((uint64_t)(atomic32_t)(old)), \ + [__old] "Ir" ((uint64_t)(atomic32_t)(uint64_t)(old)), \ [__new] "Ir" (new) \ : "memory"); \ }) @@ -146,7 +146,7 @@ typedef uintmax_t uatomic_max_t; : [__prev] "=&r" (__prev), \ [__cmp] "=&r" (__cmp) \ : [__mem] "m" (*(mem)), \ - [__old] "Ir" (old), \ + [__old] "Ir" ((uint64_t)(old)), \ [__new] "Ir" (new) \ : "memory"); \ }) @@ -179,28 +179,28 @@ typedef uintmax_t uatomic_max_t; #define __arch_compare_and_exchange_val_8_int(mem, new, old, mb1, mb2) \ ({ unsigned long __prev; int __cmp; \ __arch_compare_and_exchange_xxx_8_int(mem, new, old, mb1, mb2); \ - __prev; }) + (typeof (*mem))__prev; }) #define __arch_compare_and_exchange_val_16_int(mem, new, old, mb1, mb2) \ ({ unsigned long __prev; int __cmp; \ __arch_compare_and_exchange_xxx_16_int(mem, new, old, mb1, mb2); \ - __prev; }) + (typeof (*mem))__prev; }) #define __arch_compare_and_exchange_val_32_int(mem, new, old, mb1, mb2) \ ({ unsigned long __prev; int __cmp; \ __arch_compare_and_exchange_xxx_32_int(mem, new, old, mb1, mb2); \ - __prev; }) + (typeof (*mem))__prev; }) #define __arch_compare_and_exchange_val_64_int(mem, new, old, mb1, mb2) \ ({ unsigned long __prev; int __cmp; \ __arch_compare_and_exchange_xxx_64_int(mem, new, old, mb1, mb2); \ - __prev; }) + (typeof (*mem))__prev; }) /* Compare and exchange with "acquire" semantics, ie barrier after. */ #define atomic_compare_and_exchange_bool_acq(mem, new, old) \ - __atomic_val_bysize (__arch_compare_and_exchange_bool, int, \ - mem, new, old, "", __MB) + __atomic_bool_bysize (__arch_compare_and_exchange_bool, int, \ + mem, new, old, "", __MB) #define atomic_compare_and_exchange_val_acq(mem, new, old) \ __atomic_val_bysize (__arch_compare_and_exchange_val, int, \ @@ -209,8 +209,8 @@ typedef uintmax_t uatomic_max_t; /* Compare and exchange with "release" semantics, ie barrier before. */ #define atomic_compare_and_exchange_bool_rel(mem, new, old) \ - __atomic_val_bysize (__arch_compare_and_exchange_bool, int, \ - mem, new, old, __MB, "") + __atomic_bool_bysize (__arch_compare_and_exchange_bool, int, \ + mem, new, old, __MB, "") #define atomic_compare_and_exchange_val_rel(mem, new, old) \ __atomic_val_bysize (__arch_compare_and_exchange_val, int, \ |