From feb9fd6a9f019b20b1c60ed664b4887592f78032 Mon Sep 17 00:00:00 2001 From: Tyler Retzlaff Date: Fri, 24 Jan 2025 08:14:02 -0800 Subject: [PATCH] eal/x86: add write combining store for MSVC MSVC does not support inline assembly. Instead it provides compiler intrinsics. Provide conditional compile for MSVC for movdiri using the _directstoreu_u32 intrinsic. Signed-off-by: Tyler Retzlaff --- lib/eal/x86/include/rte_io.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/eal/x86/include/rte_io.h b/lib/eal/x86/include/rte_io.h index f92a2e5295b..7087e728ce0 100644 --- a/lib/eal/x86/include/rte_io.h +++ b/lib/eal/x86/include/rte_io.h @@ -22,11 +22,15 @@ extern "C" { static __rte_always_inline void __rte_x86_movdiri(uint32_t value, volatile void *addr) { +#ifdef RTE_TOOLCHAIN_MSVC + _directstoreu_u32((void *)(uintptr_t)addr, value); +#else asm volatile( /* MOVDIRI */ ".byte 0x0f, 0x38, 0xf9, 0x02" : : "a" (value), "d" (addr)); +#endif } __rte_experimental