Index: pace/lib/c/arch/abs32le/include/libarch/barrier.h
===================================================================
--- uspace/lib/c/arch/abs32le/include/libarch/barrier.h	(revision f8048d1b96f0b84d1c64179e0aaed6c7f1352f87)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../../../../../../../kernel/arch/abs32le/include/arch/barrier.h
Index: pace/lib/c/arch/amd64/include/libarch/barrier.h
===================================================================
--- uspace/lib/c/arch/amd64/include/libarch/barrier.h	(revision f8048d1b96f0b84d1c64179e0aaed6c7f1352f87)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../../../../../../../kernel/arch/amd64/include/arch/barrier.h
Index: pace/lib/c/arch/arm32/include/libarch/barrier.h
===================================================================
--- uspace/lib/c/arch/arm32/include/libarch/barrier.h	(revision f8048d1b96f0b84d1c64179e0aaed6c7f1352f87)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../../../../../../../kernel/arch/arm32/include/arch/barrier.h
Index: pace/lib/c/arch/ia32/include/libarch/barrier.h
===================================================================
--- uspace/lib/c/arch/ia32/include/libarch/barrier.h	(revision f8048d1b96f0b84d1c64179e0aaed6c7f1352f87)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../../../../../../../kernel/arch/ia32/include/arch/barrier.h
Index: pace/lib/c/arch/ia64/include/libarch/barrier.h
===================================================================
--- uspace/lib/c/arch/ia64/include/libarch/barrier.h	(revision f8048d1b96f0b84d1c64179e0aaed6c7f1352f87)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../../../../../../../kernel/arch/ia64/include/arch/barrier.h
Index: pace/lib/c/arch/mips32/include/libarch/barrier.h
===================================================================
--- uspace/lib/c/arch/mips32/include/libarch/barrier.h	(revision f8048d1b96f0b84d1c64179e0aaed6c7f1352f87)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../../../../../../../kernel/arch/mips32/include/arch/barrier.h
Index: pace/lib/c/arch/mips32eb/include/libarch/barrier.h
===================================================================
--- uspace/lib/c/arch/mips32eb/include/libarch/barrier.h	(revision f8048d1b96f0b84d1c64179e0aaed6c7f1352f87)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../../../mips32/include/libarch/barrier.h
Index: pace/lib/c/arch/ppc32/include/libarch/barrier.h
===================================================================
--- uspace/lib/c/arch/ppc32/include/libarch/barrier.h	(revision f8048d1b96f0b84d1c64179e0aaed6c7f1352f87)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../../../../../../../kernel/arch/ppc32/include/arch/barrier.h
Index: pace/lib/c/arch/riscv64/include/libarch/barrier.h
===================================================================
--- uspace/lib/c/arch/riscv64/include/libarch/barrier.h	(revision f8048d1b96f0b84d1c64179e0aaed6c7f1352f87)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../../../../../../../kernel/arch/riscv64/include/arch/barrier.h
Index: pace/lib/c/arch/sparc64/include/libarch/barrier.h
===================================================================
--- uspace/lib/c/arch/sparc64/include/libarch/barrier.h	(revision f8048d1b96f0b84d1c64179e0aaed6c7f1352f87)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../../../../../../../kernel/arch/sparc64/include/arch/barrier.h
Index: uspace/lib/c/arch/sparc64/include/libarch/ddi.h
===================================================================
--- uspace/lib/c/arch/sparc64/include/libarch/ddi.h	(revision f8048d1b96f0b84d1c64179e0aaed6c7f1352f87)
+++ uspace/lib/c/arch/sparc64/include/libarch/ddi.h	(revision d51cca81f54dcd276fed68e8d36c097fe888f846)
@@ -34,13 +34,6 @@
 #define LIBC_sparc64_DDI_H_
 
+#include <barrier.h>
 #include <ddi.h>
-
-static inline void memory_barrier(void)
-{
-	asm volatile (
-	    "membar #LoadLoad | #StoreStore\n"
-	    ::: "memory"
-	);
-}
 
 static inline void arch_pio_write_8(ioport8_t *port, uint8_t v)
Index: uspace/lib/c/include/barrier.h
===================================================================
--- uspace/lib/c/include/barrier.h	(revision f8048d1b96f0b84d1c64179e0aaed6c7f1352f87)
+++ uspace/lib/c/include/barrier.h	(revision d51cca81f54dcd276fed68e8d36c097fe888f846)
@@ -36,9 +36,27 @@
 #define LIBC_COMPILER_BARRIER_H_
 
-#include <libarch/barrier.h>
+#include <stdatomic.h>
 
 extern void smp_memory_barrier(void);
 
-#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);
+}
 
 /** Forces the compiler to access (ie load/store) the variable only once. */
