vppinfra: add clib_prefetch_load and clib_prefetch_store
[vpp.git] / src / vppinfra / cache.h
index ac08355..04f91e0 100644 (file)
@@ -45,9 +45,6 @@
  */
 #ifndef CLIB_LOG2_CACHE_LINE_BYTES
 
-/* defines CLIB_LOG2_CACHE_LINE_BYTES */
-#include <vppinfra/config.h>
-
 /* Default cache line size of 64 bytes. */
 #ifndef CLIB_LOG2_CACHE_LINE_BYTES
 #define CLIB_LOG2_CACHE_LINE_BYTES 6
 
 #define CLIB_CACHE_LINE_BYTES (1 << CLIB_LOG2_CACHE_LINE_BYTES)
 #define CLIB_CACHE_LINE_ALIGN_MARK(mark) u8 mark[0] __attribute__((aligned(CLIB_CACHE_LINE_BYTES)))
+#define CLIB_CACHE_LINE_ROUND(x) ((x + CLIB_CACHE_LINE_BYTES - 1) & ~(CLIB_CACHE_LINE_BYTES - 1))
+
+/* Default cache line fill buffers. */
+#ifndef CLIB_N_PREFETCHES
+#define CLIB_N_PREFETCHES 16
+#endif
 
 /* Read/write arguments to __builtin_prefetch. */
 #define CLIB_PREFETCH_READ 0
@@ -87,6 +90,18 @@ do {                                         \
 
 #undef _
 
+static_always_inline void
+clib_prefetch_load (void *p)
+{
+  CLIB_PREFETCH (p, CLIB_CACHE_LINE_BYTES, LOAD);
+}
+
+static_always_inline void
+clib_prefetch_store (void *p)
+{
+  CLIB_PREFETCH (p, CLIB_CACHE_LINE_BYTES, STORE);
+}
+
 #endif /* included_clib_cache_h */