[dpdk-dev] [PATCH v1 1/2] eal/x86: add WC store function
Radu Nicolau
radu.nicolau at intel.com
Thu Jun 11 12:11:22 CEST 2020
Add rte_write32_wc function that implements a WC store
using movdiri instruction.
Signed-off-by: Radu Nicolau <radu.nicolau at intel.com>
---
lib/librte_eal/x86/include/rte_io.h | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/lib/librte_eal/x86/include/rte_io.h b/lib/librte_eal/x86/include/rte_io.h
index 2db71b1..3d74bec 100644
--- a/lib/librte_eal/x86/include/rte_io.h
+++ b/lib/librte_eal/x86/include/rte_io.h
@@ -11,6 +11,26 @@ extern "C" {
#include "generic/rte_io.h"
+/**
+ * Write a 32-bit value to I/O device memory address *addr*.
+ * Uses MOVDIRI instruction to perform a direct-store operation using WC
+ * memory write protocol.
+ *
+ * @param value
+ * Value to write
+ * @param addr
+ * I/O memory address to write the value to
+ */
+static __rte_always_inline void
+rte_write32_wc(uint32_t value, volatile void *addr)
+{
+ asm volatile("sfence\n\t"
+ /* MOVDIRI */
+ ".byte 0x40, 0x0f, 0x38, 0xf9, 0x02"
+ :
+ : "a" (value), "d" (addr));
+}
+
#ifdef __cplusplus
}
#endif
--
2.7.4
More information about the dev
mailing list