summaryrefslogtreecommitdiffstats
path: root/spec/rtems/basedefs/req/compiler-memory-barrier-0.yml
diff options
context:
space:
mode:
Diffstat (limited to 'spec/rtems/basedefs/req/compiler-memory-barrier-0.yml')
-rw-r--r--spec/rtems/basedefs/req/compiler-memory-barrier-0.yml22
1 files changed, 22 insertions, 0 deletions
diff --git a/spec/rtems/basedefs/req/compiler-memory-barrier-0.yml b/spec/rtems/basedefs/req/compiler-memory-barrier-0.yml
new file mode 100644
index 00000000..e3101e55
--- /dev/null
+++ b/spec/rtems/basedefs/req/compiler-memory-barrier-0.yml
@@ -0,0 +1,22 @@
+SPDX-License-Identifier: CC-BY-SA-4.0
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: requirement-refinement
+ uid: ../if/compiler-memory-barrier
+non-functional-type: interface
+rationale: |
+ A Full Software Memory Barrier prevents the compiler to move loads and
+ stores (in any direction) beyond the point where the barrier is in the
+ code. Otherwise this may occur as part of compiler optimizations.
+ This is a compile time only barrier. The CPU optimizations can still
+ move instructions over the barrier at run-time.
+references: []
+requirement-type: non-functional
+text: |
+ When the code is compiled with the GNU C compiler,
+ the ${../if/compiler-memory-barrier:/name} macro shall
+ realize a Full Software Memory Barrier at the place in the code where
+ it occurs.
+type: requirement