aboutsummaryrefslogtreecommitdiff
path: root/src/rv32.tex
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2021-09-30 01:10:13 -0700
committerAndrew Waterman <andrew@sifive.com>2021-09-30 01:12:42 -0700
commite511c4664368355e6d85b8e487fdfdc5d7de44e4 (patch)
treecc9121047bc732c5d89bb5e46ebc8bfb0b3c8def /src/rv32.tex
parentd29cb13885d7dfaae9aaa27b45e44733254ead37 (diff)
downloadriscv-isa-manual-e511c4664368355e6d85b8e487fdfdc5d7de44e4.zip
riscv-isa-manual-e511c4664368355e6d85b8e487fdfdc5d7de44e4.tar.gz
riscv-isa-manual-e511c4664368355e6d85b8e487fdfdc5d7de44e4.tar.bz2
Improve description of FENCE.TSO
The description of FENCE.TSO as "optional" was incorrect. It has always been a mandatory instruction (because of the requirement that unused patterns in the fm field be treated as though fm=0).
Diffstat (limited to 'src/rv32.tex')
-rw-r--r--src/rv32.tex9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/rv32.tex b/src/rv32.tex
index 99d58f7..70e27d6 100644
--- a/src/rv32.tex
+++ b/src/rv32.tex
@@ -1266,7 +1266,7 @@ The fence mode field {\em fm} defines the semantics of the FENCE. A
FENCE with {\em fm}=0000 orders all memory operations in its
predecessor set before all memory operations in its successor set.
-The optional FENCE.TSO instruction is encoded as a FENCE instruction
+The FENCE.TSO instruction is encoded as a FENCE instruction
with {\em fm}=1000, {\em predecessor}=RW, and {\em successor}=RW.
FENCE.TSO orders all load
operations in its predecessor set before all memory operations in its
@@ -1276,10 +1276,9 @@ operations in the FENCE.TSO's predecessor set unordered with non-AMO
loads in its successor set.
\begin{commentary}
- The FENCE.TSO encoding was added as an optional extension to the
- original base FENCE instruction encoding. The base definition
- requires that implementations ignore any set bits and treat the
- FENCE as global, and so this is a backwards-compatible extension.
+ Because \mbox{FENCE RW,RW} imposes a superset of the orderings that
+ FENCE.TSO imposes, it is correct to ignore the {\em fm} field and
+ implement FENCE.TSO as \mbox{FENCE RW,RW}.
\end{commentary}
The unused fields in the FENCE instructions---{\em rs1} and {\em rd}---are