| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
Bump libatomic_ops version to 7.4.18
* ChangeLog (7.4.18): Set release date.
* README.md: Bump micro version.
* configure.ac (AC_INIT): Likewise.
* src/atomic_ops/ao_version.h (AO_VERSION_MICRO): Likewise.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(fix of commit cbbf8633)
According to the GCC manual, __atomic_test_and_set() result type is
Bool, thus it is not guaranteed to return AO_TS_SET value. (E.g., the
function may return 1 while AO_TS_SET is 255, as observed on sparc64
with gcc-12.)
* src/atomic_ops/sysdeps/gcc/generic.h [!AO_PREFER_GENERALIZED]
(AO_test_and_set, AO_test_and_set_acquire, AO_test_and_set_release,
AO_test_and_set_full): Return AO_TS_SET if __atomic_test_and_set()
result is non-zero, AO_TS_CLEAR otherwise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(a cherry-pick of commit ed712f7dc from 'release-7_6')
Issue #45 (libatomic_ops).
Enforce proper alignment of AO_stack_t.AO_ptr to avoid the structure
value to cross the CPU cache line boundary. A workaround for
almost-lock-free push/pop test failures on aarch64, at least.
* src/atomic_ops_stack.h [AO_USE_ALMOST_LOCK_FREE
&& !AO_STACK_ATTR_ALLIGNED] (AO_STACK_ATTR_ALLIGNED): Define.
* src/atomic_ops_stack.h [AO_USE_ALMOST_LOCK_FREE]
(AO_stack_t.AO_ptr): Add AO_STACK_ATTR_ALLIGNED attribute.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(a cherry-pick of commit ae0f8e7e4 from 'release-7_4')
Also, execute the first read in a loop with an acquire barrier, and
place black list checking as close to CAS as possible.
* src/atomic_ops_stack.c [AO_USE_ALMOST_LOCK_FREE]
(AO_stack_push_explicit_aux_release): Use acquire barrier to read list
value (stored to next local variable); read list value and store it to
x element before iterating over AO_stack_bl (and, thus, retry iterating
over AO_stack_bl if CAS failed).
|
| |
|
|
|
|
|
| |
* src/atomic_ops.c [__CYGWIN__ && !AO_USE_NO_SIGNALS && !_GNU_SOURCE]
(_GNU_SOURCE): Define macro.
|
|
|
|
|
|
|
| |
(a cherry-pick of commit 9040f45a6 from 'release-7_6')
* tests/test_stack.c (main): Adjust indentation for ifdef VERBOSE
and for "for" statement (for statistic output).
|
|
|
|
|
|
|
|
| |
(a cherry-pick of commit 2d62edfd5 from 'master')
* src/atomic_ops_stack.h [AO_USE_ALMOST_LOCK_FREE]
(AO_stack_push_explicit_aux_release): Remove extra "an" (after "the")
in comment.
|
|
|
|
|
|
|
| |
(fix of commit f30c76e28)
* src/atomic_ops_stack.h [AO_USE_ALMOST_LOCK_FREE && (__LP64__
|| _LP64 || _WIN64)] (AO_N_BITS): Remove outdated comment about Win64.
|
| |
|
| |
|
|
|
|
|
|
|
| |
(fix of commit e078c7bb7)
* src/atomic_ops/sysdeps/msftc/x86_64.h: Do not include
ordered_except_wr.h if _M_ARM64.
|
|
|
|
| |
(a cherry-pick of commit f105ef115 from 'release-7_6')
|
|
|
|
|
|
| |
(a cherry-pick of commit 2e9d20292 from 'master')
Also, rename CPU variable to ARCH. Delete MS_SDK_VER variable.
|
| |
|
|
|
|
|
|
|
|
|
| |
Bump libatomic_ops version to 7.4.16
* ChangeLog (7.4.16): Add release date.
* README.md: Bump micro version.
* configure.ac (AC_INIT): Likewise.
* src/atomic_ops/ao_version.h (AO_VERSION_MICRO): Likewise.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Use the same type for input and output inline asm operands in
AO_compare_and_swap_full().
* src/atomic_ops/sysdeps/gcc/sparc.h [!AO_NO_SPARC_V9
&& !AO_GENERALIZE_ASM_BOOL_CAS] (AO_compare_and_swap_full): Change type
of ret local variable from char to AO_t.
|
|
|
|
|
|
|
| |
Issue #48 (libatomic_ops).
* src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h
(AO_ACCESS_CHECK_ALIGNED): Do not define if __m68k__; add comment.
|
|
|
|
| |
(a cherry-pick of commit 9caa19f56 from 'release-7_6')
|
|
|
|
| |
(a cherry-pick of commit ba2aacbd0 from 'release-7_6')
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(a cherry-pick of commit 50b8b0b from 'release-7_6')
Bind E/RDX to a dummy output since cmpxchg8/16b clobbers it.
* src/atomic_ops/sysdeps/gcc/x86.h [!__x86_64__
&& !AO_USE_SYNC_CAS_BUILTIN || !(__ILP32__ || !__x86_64__)
&& AO_CMPXCHG16B_AVAILABLE] (AO_compare_double_and_swap_double_full):
Declare dummy local variable; specify "=d"(dummy) for asm code.
* src/atomic_ops/sysdeps/sunc/x86.h [__i386 && !AO_NO_CMPXCHG8B ||
!__i386 && AO_CMPXCHG16B_AVAILABLE]
(AO_compare_double_and_swap_double_full): Likewise.
|
| |
|
|
|
|
| |
* doc/README_details.txt: Fix typo ("libatomic_ops_gpl.a").
|
|
|
|
|
|
|
|
|
| |
Bump libatomic_ops version to 7.4.14
* ChangeLog (7.4.14): Add release date.
* README.md: Bump micro version.
* configure.ac (AC_INIT): Likewise.
* src/atomic_ops/ao_version.h (AO_VERSION_MICRO): Likewise.
|
| |
|
| |
|
|
|
|
| |
(a cherry-pick of commit 333aafc from 'release-7_6')
|
|
|
|
|
|
|
|
|
| |
(a cherry-pick of commit 7eef5b2 from 'release-7_6')
* src/atomic_ops.h [!AO_CLEAR]: Replace "AO_AO_TS_T" with
"defined(AO_AO_TS_T)" and AO_CHAR_TS_T" with "defined(AO_CHAR_TS_T)",
respectively, in the "if" preprocessor directives.
* src/atomic_ops/generalize.h: Likewise.
|
|
|
|
|
|
|
|
|
| |
Bump libatomic_ops version to 7.4.12
* ChangeLog (7.4.12): Add release date.
* README.md: Bump micro version.
* configure.ac (AC_INIT): Likewise.
* src/atomic_ops/ao_version.h (AO_VERSION_MICRO): Likewise.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(revert part of commit cbde60d)
* src/atomic_ops/sysdeps/icc/ia64.h (AO_char_load_acquire): Fix typo
("an ld.acq") in comment.
* src/atomic_ops/sysdeps/loadstore/acquire_release_volatile.template
(AO_XSIZE_load_acquire): Likewise.
* src/atomic_ops/sysdeps/icc/ia64.h (AO_short_load_acquire,
AO_int_load_acquire): Add comment (similar to that of
AO_char_load_acquire).
* src/atomic_ops/sysdeps/loadstore/acquire_release_volatile.template
(AO_XSIZE_store_release): Fix typo ("an st.rel") in comment.
* src/atomic_ops/sysdeps/loadstore/acquire_release_volatile.h:
Regenerate.
* src/atomic_ops/sysdeps/loadstore/char_acquire_release_volatile.h:
Likewise.
* src/atomic_ops/sysdeps/loadstore/int_acquire_release_volatile.h:
Likewise.
* src/atomic_ops/sysdeps/loadstore/short_acquire_release_volatile.h:
Likewise.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(back-port of commit 3f41ecb from 'release-7_6')
Issue #38 (libatomic_ops).
* src/atomic_ops/sysdeps/gcc/aarch64.h [(!__clang__
|| AO_AARCH64_ASM_LOAD_STORE_CAS) && !AO_PREFER_GENERALIZED
&& __ILP32__] (AO_double_load, AO_double_load_acquire, AO_double_store,
AO_double_store_release): Specify the size ("w") of arguments of the
aarch64 instructions.
* src/atomic_ops/sysdeps/gcc/aarch64.h [(!__clang__
|| AO_AARCH64_ASM_LOAD_STORE_CAS) && __ILP32__]
(AO_double_compare_and_swap, AO_double_compare_and_swap_acquire,
AO_double_compare_and_swap_release, AO_double_compare_and_swap_full):
Likewise.
* src/atomic_ops/sysdeps/standard_ao_double_t.h [__aarch64__
&& __ILP32__] (double_ptr_storage): Define as unsigned long long
(instead of unsigned __int128).
|
| |
|
| |
|
|
|
|
| |
* src/atomic_ops.h [_MSC_VER && _M_ARM64]: Include msftc/x86_64.h.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* src/atomic_ops/sysdeps/armcc/arm_v6.h [!AO_UNIPROCESSOR]
(AO_nop_full): Fix typo ("a data memory barrier") in comment.
* src/atomic_ops/sysdeps/icc/ia64.h (AO_char_load_acquire): Fix typo
("a ld.acq instruction") in comment.
* src/atomic_ops/sysdeps/loadstore/acquire_release_volatile.template
(AO_XSIZE_load_acquire): Likewise.
* src/atomic_ops/sysdeps/icc/ia64.h (AO_short_load_acquire,
AO_int_load_acquire): Remove comment duplicating that in
AO_char_load_acquire.
* src/atomic_ops/sysdeps/loadstore/acquire_release_volatile.template
(AO_XSIZE_store_release): Fix typo ("a st.rel instruction") in comment.
* src/atomic_ops/sysdeps/loadstore/acquire_release_volatile.h:
Regenerate.
* src/atomic_ops/sysdeps/loadstore/char_acquire_release_volatile.h:
Likewise.
* src/atomic_ops/sysdeps/loadstore/int_acquire_release_volatile.h:
Likewise.
* src/atomic_ops/sysdeps/loadstore/short_acquire_release_volatile.h:
Likewise.
|
| |
|
|
|
|
|
|
| |
(fix of commit 147988d9)
* README.md (Overview): Fix typo ("a number of") in documentation.
|
|
|
|
| |
(back-port of commit 3a38ade from 'release-7_6')
|