From: Tyler Retzlaff <roret...@linux.microsoft.com>

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 <roret...@linux.microsoft.com>
---
 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 f92a2e5295..7087e728ce 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
-- 
2.47.2.vfs.0.1

Reply via email to