diff options
author | Bill Traynor <wmat@riscv.org> | 2023-03-17 14:26:20 -0400 |
---|---|---|
committer | Bill Traynor <wmat@riscv.org> | 2023-03-17 14:26:20 -0400 |
commit | 508cb3c340aa3d518809dc87db8201b181bbd20b (patch) | |
tree | f3f1da809c9339408fe018b12cac2c145a97b0a8 /src | |
parent | 1f013052ab6a8f85a8871e83d61bef724dbc1fa1 (diff) | |
download | riscv-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.adoc | 11 | ||||
-rw-r--r-- | src/images/bytefield/hstatusreg-rv32.edn | 56 | ||||
-rw-r--r-- | src/images/bytefield/hstatusreg.edn | 81 |
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 |