Support ILP32 in AArch64 assembly routines (GCC)
authorFrank Schaefer <kelledin@gmail.com>
Wed, 24 Oct 2018 03:11:02 +0000 (22:11 -0500)
committerIvan Maidanski <ivmai@mail.ru>
Mon, 29 Oct 2018 05:45:17 +0000 (08:45 +0300)
commit8565270c0e35dd80c10e20a57f4c89655eaa09ad
tree5a92ae354043ffa56e142f6993ce4f6f538aab29
parentc6965742a4c4998d68be7d4384791e565f71b0b7
Support ILP32 in AArch64 assembly routines (GCC)
(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/sysdeps/gcc/aarch64.h
src/atomic_ops/sysdeps/standard_ao_double_t.h