aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsigsegv7 <ian@vegaa.systems>2023-09-28 15:37:15 -0400
committersigsegv7 <ian@vegaa.systems>2023-09-28 15:37:15 -0400
commit76a6a3da6be53621d017416bfd81f1fda265ac7c (patch)
treea4f03cb4f52deea08bca6f1156d74eb9b96552cb
parent215efd60900f28bb543ffab400306fbd01a4f76c (diff)
kernel: mmio: Add memory barriers to helpers
This commit introduces memory barriers to MMIO read/write helpers to ensure the compiler does not re-order these critical memory accesses which would in turn result in very strange behaviour if it were to be re-ordered. Signed-off-by: sigsegv7 <ian@vegaa.systems>
-rw-r--r--sys/include/sys/mmio.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/include/sys/mmio.h b/sys/include/sys/mmio.h
index f840bf8..0cc1983 100644
--- a/sys/include/sys/mmio.h
+++ b/sys/include/sys/mmio.h
@@ -31,6 +31,7 @@
#define _SYS_MMIO_H_
#include <sys/types.h>
+#include <sys/cdefs.h>
#include <vm/vm.h>
/*
@@ -57,6 +58,7 @@
tmp += VM_HIGHER_HALF; \
} \
*(volatile TYPE *)tmp = val; \
+ __mem_barrier(); \
}
/*
@@ -74,6 +76,8 @@
if (tmp < VM_HIGHER_HALF) { \
tmp += VM_HIGHER_HALF; \
} \
+ \
+ __mem_barrier(); /* Ensure writes complete */ \
return *(volatile TYPE *)tmp; \
}