aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBill Traynor <wmat@riscv.org>2023-03-17 14:26:20 -0400
committerBill Traynor <wmat@riscv.org>2023-03-17 14:26:20 -0400
commit508cb3c340aa3d518809dc87db8201b181bbd20b (patch)
treef3f1da809c9339408fe018b12cac2c145a97b0a8 /src
parent1f013052ab6a8f85a8871e83d61bef724dbc1fa1 (diff)
downloadriscv-isa-manual-508cb3c340aa3d518809dc87db8201b181bbd20b.zip
riscv-isa-manual-508cb3c340aa3d518809dc87db8201b181bbd20b.tar.gz
riscv-isa-manual-508cb3c340aa3d518809dc87db8201b181bbd20b.tar.bz2
Added hstatusreg diag
Added hstatusreg diagram.
Diffstat (limited to 'src')
-rw-r--r--src/hypervisor.adoc11
-rw-r--r--src/images/bytefield/hstatusreg-rv32.edn56
-rw-r--r--src/images/bytefield/hstatusreg.edn81
3 files changed, 142 insertions, 6 deletions
diff --git a/src/hypervisor.adoc b/src/hypervisor.adoc
index 2378436..b7cb764 100644
--- a/src/hypervisor.adoc
+++ b/src/hypervisor.adoc
@@ -143,7 +143,7 @@ when executing in VS-mode.
The `hstatus` register is an HSXLEN-bit read/write register formatted as
shown in <<hstatusreg-rv32>> when HSXLEN=32
-and Figure link:#hstatusreg[[hstatusreg]] when HSXLEN=64. The `hstatus`
+and <<hstatusreg>> when HSXLEN=64. The `hstatus`
register provides facilities analogous to the `mstatus` register for
tracking and controlling the exception behavior of a VS-mode guest.
@@ -151,16 +151,15 @@ tracking and controlling the exception behavior of a VS-mode guest.
.Hypervisor status register (`hstatus`) when HSLEN=32
include::images/bytefield/hstatusreg-rv32.edn[]
+[[hstatusreg]]
+.Hypervisor status register (`hstatus`) when HSXLEN=64.
+include::images/bytefield/hstatusreg.edn[]
-cWRWcccccY +
-& & & & & & & & & +
-& & & & & & & & & +
-& 2 & 6 & 2 & 1 & 1 & 1 & 1 & 1 & 5 +
The VSXL field controls the effective XLEN for VS-mode (known as
VSXLEN), which may differ from the XLEN for HS-mode (HSXLEN). When
HSXLEN=32, the VSXL field does not exist, and VSXLEN=32. When HSXLEN=64,
-VSXL is a  field that is encoded the same as the MXL field of `misa`,
+VSXL is a *WARL* field that is encoded the same as the MXL field of `misa`,
shown in <<misabase>> on page <<misabase, 19>>. In particular, an
implementation may make VSXL be a read-only field whose value always
ensures that VSXLEN=HSXLEN.
diff --git a/src/images/bytefield/hstatusreg-rv32.edn b/src/images/bytefield/hstatusreg-rv32.edn
new file mode 100644
index 0000000..1bf2e01
--- /dev/null
+++ b/src/images/bytefield/hstatusreg-rv32.edn
@@ -0,0 +1,56 @@
+[bytefield]
+----
+(defattrs :plain [:plain {:font-family "M+ 1p Fallback" :font-size 20}])
+(def row-height 30 )
+(def row-header-fn nil)
+(def left-margin 100)
+(def right-margin 100)
+(def boxes-per-row 25)
+
+(draw-box "31" {:span 2 :borders {} :text-anchor "start"})
+(draw-box "23" {:borders {}})
+(draw-box "22" {:span 2 :borders {}})
+(draw-box "21" {:span 2 :borders {}})
+(draw-box "20" {:span 2 :borders {}})
+(draw-box "19" {:borders {}})
+(draw-box "18" {:borders {}})
+(draw-box "17" {:span 2 :borders {} :text-anchor "start"})
+(draw-box "12" {:borders {}})
+(draw-box "11" {:borders {}})
+(draw-box "10" {:borders {}})
+(draw-box "9" {:borders {}})
+(draw-box "8" {:span 2 :borders {}})
+(draw-box "7" {:borders {}})
+(draw-box "6" {:borders {}})
+(draw-box "5" {:span 2 :borders {}})
+(draw-box "4" {:borders {}})
+(draw-box "0" {:borders {}})
+
+(draw-box (text "WPRI" {:font-weight "bold"}) {:span 3})
+(draw-box "VTSR" {:span 2})
+(draw-box "VTW" {:span 2})
+(draw-box "VTVM" {:span 2})
+(draw-box (text "WPRI" {:font-weight "bold"}) {:span 2})
+(draw-box "VGEIN[5:0]" {:span 3})
+(draw-box (text "WPRI" {:font-weight "bold"}) {:span 2})
+(draw-box "HU")
+(draw-box "SPVP" {:span 2})
+(draw-box "SPV")
+(draw-box "GVA")
+(draw-box "VSBE" {:span 2})
+(draw-box (text "WPRI" {:font-weight "bold"}) {:span 2})
+
+(draw-box "9" {:span 3 :borders {}})
+(draw-box "1" {:span 2 :borders {}})
+(draw-box "1" {:span 2 :borders {}})
+(draw-box "1" {:span 2 :borders {}})
+(draw-box "2" {:span 2 :borders {}})
+(draw-box "6" {:span 3 :borders {}})
+(draw-box "2" {:span 2 :borders {}})
+(draw-box "1" {:borders {}})
+(draw-box "2" {:span 2 :borders {}})
+(draw-box "1" {:borders {}})
+(draw-box "1" {:borders {}})
+(draw-box "2" {:span 2 :borders {}})
+(draw-box "5" {:span 2 :borders {}})
+----
diff --git a/src/images/bytefield/hstatusreg.edn b/src/images/bytefield/hstatusreg.edn
new file mode 100644
index 0000000..743d1ea
--- /dev/null
+++ b/src/images/bytefield/hstatusreg.edn
@@ -0,0 +1,81 @@
+[bytefield]
+----
+(defattrs :plain [:plain {:font-family "M+ 1p Fallback" :font-size 20}])
+(def row-height 30 )
+(def row-header-fn nil)
+(def left-margin 100)
+(def right-margin 100)
+(def boxes-per-row 26)
+
+(draw-box "HSXLEN-1" {:span 8 :borders {} :text-anchor "start"})
+(draw-box "34" {:borders {}})
+(draw-box "33" {:span 2 :borders {} :text-anchor "start"})
+(draw-box "32" {:span 2 :borders {} :text-anchor "end"})
+(draw-box "31" {:span 3 :borders {} :text-anchor "start"})
+(draw-box "23" {:span 3 :borders {} :text-anchor "end"})
+(draw-box "22" {:span 2:borders {}})
+(draw-box "21" {:span 2 :borders {}})
+(draw-box "20" {:span 2:borders {}})
+(draw-box nil {:borders {}})
+
+(draw-box (text "WPRI" {:font-weight "bold"}) {:span 9})
+(draw-box "VSXL[1:0]" {:span 4})
+(draw-box (text "WPRI" {:font-weight "bold"}) {:span 6})
+(draw-box "VTSR" {:span 2})
+(draw-box "VTW" {:span 2})
+(draw-box "VTVM" {:span 2})
+(draw-box nil {:borders {:top :border-unrelated :bottom :border-unrelated}})
+
+(draw-box "HSXLEN-34" {:span 9 :borders {}})
+(draw-box "2" {:span 4 :borders {}})
+(draw-box "9" {:span 6 :borders {}})
+(draw-box "1" {:span 2 :borders {}})
+(draw-box "1" {:span 2 :borders {}})
+(draw-box "1" {:span 2 :borders {}})
+(draw-box nil {:borders {}})
+
+(draw-box nil {:span 26 :borders {}})
+
+(draw-box nil {:span 3 :borders {}})
+(draw-box nil {:borders {}})
+(draw-box "19" {:borders {}})
+(draw-box "18" {:borders {}})
+(draw-box "17" {:span 2 :borders {} :text-anchor "start"})
+(draw-box "12" {:span 2 :borders {} :text-anchor "end"})
+(draw-box "11" {:borders {}})
+(draw-box "10" {:borders {}})
+(draw-box "9" {:borders {}})
+(draw-box "8" {:span 2 :borders {}})
+(draw-box "7" {:borders {}})
+(draw-box "6" {:borders {}})
+(draw-box "5" {:span 2 :borders {}})
+(draw-box "4" {:span 2 :borders {} :text-anchor "start"})
+(draw-box "0" {:span 2 :borders {} :text-anchor "end"})
+(draw-box nil {:span 3 :borders {}})
+
+(draw-box nil {:span 3 :borders {}})
+(draw-box nil {:borders {:top :border-unrelated :bottom :border-unrelated}})
+(draw-box (text "WPRI" {:font-weight "bold"}) {:span 2})
+(draw-box "VGEIN[5:0]" {:span 4})
+(draw-box (text "WPRI" {:font-weight "bold"}) {:span 2})
+(draw-box "HU")
+(draw-box "SPVP" {:span 2})
+(draw-box "SPV")
+(draw-box "GVA")
+(draw-box "VSBE" {:span 2})
+(draw-box (text "WPRI" {:font-weight "bold"}) {:span 4})
+(draw-box nil {:span 3 :borders {}})
+
+(draw-box nil {:span 4 :borders {}})
+(draw-box "2" {:span 2 :borders {}})
+(draw-box "6" {:span 4 :borders {}})
+(draw-box "2" {:span 2 :borders {}})
+(draw-box "1" {:borders {}})
+(draw-box "1" {:span 2 :borders {}})
+(draw-box "1" {:borders {}})
+(draw-box "1" {:borders {}})
+(draw-box "1" {:span 2 :borders {}})
+(draw-box "5" {:span 4 :borders {}})
+(draw-box nil {:span 3 :borders {}})
+
+---- \ No newline at end of file