Index: kernel/generic/include/barrier.h
===================================================================
--- kernel/generic/include/barrier.h	(revision a1b9f63c506357f379bb6f1d9f633d5a740e941c)
+++ kernel/generic/include/barrier.h	(revision ffa73c60dc2eba8ce632c52a0be8bbf4ecd562d9)
@@ -30,10 +30,34 @@
 #define KERN_COMPILER_BARRIER_H_
 
-#include <arch/barrier.h>
+#include <stdatomic.h>
+#include <stddef.h>
 
-#define compiler_barrier() asm volatile ("" ::: "memory")
+static inline void compiler_barrier(void)
+{
+	atomic_signal_fence(memory_order_seq_cst);
+}
+
+static inline void memory_barrier(void)
+{
+	atomic_thread_fence(memory_order_seq_cst);
+}
+
+static inline void read_barrier(void)
+{
+	atomic_thread_fence(memory_order_acquire);
+}
+
+static inline void write_barrier(void)
+{
+	atomic_thread_fence(memory_order_release);
+}
+
+#define CS_ENTER_BARRIER() atomic_thread_fence(memory_order_acquire)
+#define CS_LEAVE_BARRIER() atomic_thread_fence(memory_order_release)
 
 /** Forces the compiler to access (ie load/store) the variable only once. */
 #define ACCESS_ONCE(var) (*((volatile typeof(var)*)&(var)))
 
+extern void smc_coherence(void *, size_t);
+
 #endif /* KERN_COMPILER_BARRIER_H_ */
