diff --git a/include/ntapi/bits/nt64/nt_atomic_x86_64_asm__gcc.h b/include/ntapi/bits/nt64/nt_atomic_x86_64_asm__gcc.h
index d4d4eb0..1e3f10d 100644
--- a/include/ntapi/bits/nt64/nt_atomic_x86_64_asm__gcc.h
+++ b/include/ntapi/bits/nt64/nt_atomic_x86_64_asm__gcc.h
@@ -459,7 +459,8 @@ static __inline__ void at_store(
 {
 	__asm__(
 		"mov %1, %0;"
-		"mfence;"
+		"lock;"
+		"orq $0, %0"
 		: "=m" (*dst)
 		: "r"  (val)
 		: "memory");
@@ -472,7 +473,8 @@ static __inline__ void at_store_32(
 {
 	__asm__(
 		"mov %1, %0;"
-		"mfence;"
+		"lock;"
+		"orl $0, %0"
 		: "=m" (*dst)
 		: "r"  (val)
 		: "memory");
@@ -485,7 +487,8 @@ static __inline__ void at_store_64(
 {
 	__asm__(
 		"mov %1, %0;"
-		"mfence;"
+		"lock;"
+		"orq $0, %0"
 		: "=m" (*dst)
 		: "r"  (val)
 		: "memory");