numam-dpdk/config/arm
Phil Yang 7e2c3e17fe eal/arm64: add 128-bit atomic compare exchange
This patch adds the implementation of the 128-bit atomic compare
exchange API on aarch64. Using 64-bit 'ldxp/stxp' instructions
can perform this operation. Moreover, on the LSE atomic extension
accelerated platforms, it is implemented by 'casp' instructions for
better performance.

Since the '__ARM_FEATURE_ATOMICS' flag only supports GCC-9, this
patch adds a new config flag 'RTE_ARM_FEATURE_ATOMICS' to enable
the 'cas' version on older version compilers.
For octeontx2, we make sure that the lse (and other) extensions are
enabled even if the compiler does not know of the octeontx2 target
cpu.

Since direct x0 register used in the code and cas_op_name() and
rte_atomic128_cmp_exchange() is inline function, based on parent
function load, it may corrupt x0 register aka break aarch64 ABI.
Define CAS operations as rte_noinline functions to avoid an ABI
break [1].

1: https://git.dpdk.org/dpdk/commit/?id=5b40ec6b9662

Suggested-by: Jerin Jacob <jerinj@marvell.com>
Signed-off-by: Phil Yang <phil.yang@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Tested-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
2019-10-21 10:06:13 +02:00
..
arm64_armada_linux_gcc config: add Marvell ARMADA based on armv8-a 2019-06-04 10:30:14 +02:00
arm64_armv8_linux_gcc build: rename linuxapp to linux in meson cross files 2019-03-12 23:03:34 +01:00
arm64_bluefield_linux_gcc config: add Mellanox BlueField for meson cross-compilation 2019-04-18 18:22:42 +02:00
arm64_dpaa2_linux_gcc build: rename linuxapp to linux in meson cross files 2019-03-12 23:03:34 +01:00
arm64_dpaa_linux_gcc build: rename linuxapp to linux in meson cross files 2019-03-12 23:03:34 +01:00
arm64_octeontx2_linux_gcc config: add octeontx2 machine 2019-04-15 22:58:20 +02:00
arm64_thunderx2_linux_gcc config: add thunderx2 machine 2019-04-15 22:57:29 +02:00
arm64_thunderx_linux_gcc build: rename linuxapp to linux in meson cross files 2019-03-12 23:03:34 +01:00
armv8_machine.py build: detect micro-arch on ARM 2018-01-30 21:59:00 +01:00
meson.build eal/arm64: add 128-bit atomic compare exchange 2019-10-21 10:06:13 +02:00