#include <rte_io.h>
-/* In Cavium OcteonTX SoC, all accesses to the device registers are
+/* In Cavium OCTEON TX SoC, all accesses to the device registers are
* implicitly strongly ordered. So, The relaxed version of IO operation is
* safe to use with out any IO memory barriers.
*/
#endif
#if defined(RTE_ARCH_ARM64)
+#if defined(__ARM_FEATURE_SVE)
+#define __LSE_PREAMBLE " .cpu generic+lse+sve\n"
+#else
+#define __LSE_PREAMBLE " .cpu generic+lse\n"
+#endif
/**
* Perform an atomic fetch-and-add operation.
*/
uint64_t old_val;
__asm__ volatile(
- " .cpu generic+lse\n"
+ __LSE_PREAMBLE
" ldadd %1, %0, [%2]\n"
: "=r" (old_val) : "r" (off), "r" (addr) : "memory");
/* LDEOR initiates atomic transfer to I/O device */
__asm__ volatile(
- " .cpu generic+lse\n"
+ __LSE_PREAMBLE
" ldeor xzr, %0, [%1]\n"
: "=r" (result) : "r" (ioreg_va) : "memory");
} while (!result);
}
+#undef __LSE_PREAMBLE
#else
static inline uint64_t