aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2019-03-13 18:54:27 -0700
committerAndrew Waterman <andrew@sifive.com>2019-03-13 18:54:27 -0700
commitfa75f2515b2021e211b8432cfe0d81448438deec (patch)
treec253758a0d1ff6dce02f9fb7d95fe8a10e425893
parentd08060cef4facf327957a133c826c7cf749c6846 (diff)
downloadriscv-isa-manual-fa75f2515b2021e211b8432cfe0d81448438deec.zip
riscv-isa-manual-fa75f2515b2021e211b8432cfe0d81448438deec.tar.gz
riscv-isa-manual-fa75f2515b2021e211b8432cfe0d81448438deec.tar.bz2
Improve wording of satp/ASID/caching/speculation paragraph
@dkruckemyer-ventana This isn't meant to encode any semantic changes, just to clarify the existing text. But I thought you might want to read over it.
-rw-r--r--src/supervisor.tex21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/supervisor.tex b/src/supervisor.tex
index bc9b15f..9956c7c 100644
--- a/src/supervisor.tex
+++ b/src/supervisor.tex
@@ -998,11 +998,22 @@ the ASID value in {\em rs2} and always perform a global fence.
\end{commentary}
Implementations may perform implicit reads of the translation data structures
-arbitrarily early and speculatively. The results of these implicit speculative reads
-may be incoherently cached. However, implementations must only perform implicit
-reads of the translation data structures pointed to by the current {\tt satp}
-register, and must establish cache entries only for the ASID currently loaded
-into the {\tt satp} register, or for global entries.
+pointed to by the current {\tt satp} register arbitrarily early and
+speculatively. The results of these reads may be held in an incoherent cache
+but not shared with other harts. Cache entries may only be established for
+the ASID currently loaded into the {\tt satp} register, or for global entries.
+The cache may only satisfy implicit reads for entries that have been
+established for the ASID currently loaded into {\tt satp}, or for global
+entries. Changes in the {\tt satp} register do not necessarily flush any such
+translation caches. To ensure the implicit reads observe writes to the same
+memory locations, an SFENCE.VMA instruction must be executed after the writes
+to flush the relevant cached translations.
+
+Implementations must only perform implicit reads of the translation
+data structures pointed to by the current contents of the satp
+register, and must only raise exceptions for implicit accesses that are
+generated as a result of instruction execution, not those that are
+performed speculatively.
\begin{commentary}
The following common situations typically require executing an