summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Braun <rbraun@sceen.net>2019-08-16 03:47:14 +0200
committerRichard Braun <rbraun@sceen.net>2019-08-16 03:47:14 +0200
commit8d3129dc0fe1b89e62b73fb789affbca2d365760 (patch)
tree9e91626bf38645941a1b4caeeef646a1b17c1861
parent16b683b343fba4792fc4e99b0c7a7010c00eed3f (diff)
kern/latomic: implement fences as atomic signal fences
-rw-r--r--kern/latomic.h11
1 files changed, 6 insertions, 5 deletions
diff --git a/kern/latomic.h b/kern/latomic.h
index 683720af..8e93028e 100644
--- a/kern/latomic.h
+++ b/kern/latomic.h
@@ -31,6 +31,11 @@
* as memory-mapped device registers, while other operations only require
* interrupt safety.
*
+ * Also note that interrupts are considered to strictly match the definition
+ * of signals as described in the specification of program execution in
+ * the C language. This defines the forms of communication allowed with
+ * interrupts handlers.
+ *
* This header provides a generic implementation. Architectures can
* individually override any of the operations provided by this module.
*/
@@ -140,10 +145,6 @@ MACRO_BEGIN \
latomic_select(ptr, xor)(ptr, val, memorder); \
MACRO_END
-#define latomic_fence(memorder) \
-MACRO_BEGIN \
- assert(memorder != LATOMIC_RELAXED); \
- barrier(); \
-MACRO_END
+#define latomic_fence(memorder) __atomic_signal_fence(memorder)
#endif /* KERN_LATOMIC_H */