@@ -18,6 +18,7 @@
extern "C" {
#endif
+#include <plat/odp_sync.h>
/**
* Synchronise stores
@@ -25,25 +26,7 @@ extern "C" {
* Ensures that all CPU store operations that precede the odp_sync_stores()
* call are globally visible before any store operation that follows it.
*/
-static inline void odp_sync_stores(void)
-{
-#if defined __x86_64__ || defined __i386__
-
- __asm__ __volatile__ ("sfence\n" : : : "memory");
-
-#elif defined __arm__
-
- __asm__ __volatile__ ("dmb st" : : : "memory");
-
-#elif defined __OCTEON__
-
- __asm__ __volatile__ ("syncws\n" : : : "memory");
-
-#else
- __sync_synchronize();
-#endif
-}
-
+void odp_sync_stores(void);
#ifdef __cplusplus
}
new file mode 100644
@@ -0,0 +1,43 @@
+/* Copyright (c) 2013, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+
+/**
+ * @file
+ *
+ * ODP synchronisation
+ */
+
+#ifndef ODP_SYNC_H_
+#error This file should be included only into corresponding top level header
+#else
+
+/**
+ * Synchronise stores
+ *
+ * Ensures that all CPU store operations that precede the odp_sync_stores()
+ * call are globally visible before any store operation that follows it.
+ */
+static inline void odp_sync_stores(void)
+{
+#if defined __x86_64__ || defined __i386__
+
+ __asm__ __volatile__ ("sfence\n" : : : "memory");
+
+#elif defined __arm__
+
+ __asm__ __volatile__ ("dmb st" : : : "memory");
+
+#elif defined __OCTEON__
+
+ __asm__ __volatile__ ("syncws\n" : : : "memory");
+
+#else
+ __sync_synchronize();
+#endif
+}
+
+#endif
Signed-off-by: Taras Kondratiuk <taras.kondratiuk@linaro.org> --- include/odp_sync.h | 21 ++---------- platform/linux-generic/include/plat/odp_sync.h | 43 ++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 19 deletions(-) create mode 100644 platform/linux-generic/include/plat/odp_sync.h