diff options
author | Andrew Waterman <andrew@sifive.com> | 2021-09-08 17:54:37 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-08 17:54:37 -0700 |
commit | 5a141642f7bf36ed0d2085de0ecc66ffbb41d909 (patch) | |
tree | 49eb372072d9e1e8d838fcf13c64f341043e011a /src/hypervisor.tex | |
parent | 0abcad44c0b63e8f8aaf6d8f2dfac923f4312cb2 (diff) | |
parent | 5e685a6f166cbcf6790491681e2d8ad5c3788d9a (diff) | |
download | riscv-isa-manual-5a141642f7bf36ed0d2085de0ecc66ffbb41d909.zip riscv-isa-manual-5a141642f7bf36ed0d2085de0ecc66ffbb41d909.tar.gz riscv-isa-manual-5a141642f7bf36ed0d2085de0ecc66ffbb41d909.tar.bz2 |
Merge pull request #727 from riscv/mseccfg
Add mseccfg and *envcfg CSRs
Diffstat (limited to 'src/hypervisor.tex')
-rw-r--r-- | src/hypervisor.tex | 101 |
1 files changed, 99 insertions, 2 deletions
diff --git a/src/hypervisor.tex b/src/hypervisor.tex index 6e1c62a..0e4a595 100644 --- a/src/hypervisor.tex +++ b/src/hypervisor.tex @@ -98,7 +98,7 @@ interrupt, and address-translation subsystems. Additional CSRs are provided to HS-mode, but not to VS-mode, to manage two-stage address translation and to control the behavior of a VS-mode guest: {\tt hstatus}, {\tt hedeleg}, {\tt hideleg}, {\tt hvip}, {\tt hip}, {\tt hie}, -{\tt hgeip}, {\tt hgeie}, +{\tt hgeip}, {\tt hgeie}, {\tt henvcfg}, {\tt henvcfgh}, {\tt hcounteren}, {\tt htimedelta}, {\tt htimedeltah}, {\tt htval}, {\tt htinst}, and {\tt hgatp}. @@ -124,7 +124,8 @@ do so. Conversely, when V=0, the VS CSRs do not ordinarily affect the behavior of the machine other than being readable and writable by CSR instructions. -Some standard supervisor CSRs ({\tt scounteren} and {\tt scontext}, +Some standard supervisor CSRs ({\tt senvcfg}, +{\tt scounteren}, and {\tt scontext}, possibly others) have no matching VS CSR. These supervisor CSRs continue to have their usual function and accessibility even when V=1, except with VS-mode and VU-mode substituting for @@ -808,6 +809,102 @@ cause a supervisor-level (HS-level) guest external interrupt. The enable bits in {\tt hgeie} do not affect the VS-level external interrupt signal selected from {\tt hgeip} by {\tt hstatus}.VGEIN. +\subsection{% + Hypervisor Environment Configuration Registers + ({\tt henvcfg} and {\tt henvcfgh})% +} + +The {\tt henvcfg} CSR is an HSXLEN-bit read/write register, +formatted for HSXLEN=64 as shown in Figure~\ref{fig:henvcfg}, +that controls certain +characteristics of the execution environment when virtualization mode +V=1. + +\begin{figure}[h!] +{\footnotesize +\begin{center} +\begin{tabular}{c@{}Kcc@{}W@{}Wc} +\instbit{63} & +\instbitrange{62}{8} & +\instbit{7} & +\instbit{6} & +\instbitrange{5}{4} & +\instbitrange{3}{1} & +\instbit{0} \\ +\hline +\multicolumn{1}{|c|}{VSTCD} & +\multicolumn{1}{c|}{\wpri} & +\multicolumn{1}{c|}{CBZE} & +\multicolumn{1}{c|}{CBCFE} & +\multicolumn{1}{c|}{CBIE} & +\multicolumn{1}{c|}{\wpri} & +\multicolumn{1}{c|}{FIOM} \\ +\hline +1 & 55 & 1 & 1 & 2 & 3 & 1 \\ +\end{tabular} +\end{center} +} +\vspace{-0.1in} +\caption{Hypervisor environment configuration register ({\tt henvcfg}) for HSXLEN=64.} +\label{fig:henvcfg} +\end{figure} + +If bit FIOM (Fence of I/O implies Memory) is set to one in +{\tt henvcfg}, FENCE instructions executed when V=1 are modified +so the requirement to order accesses to device I/O implies also the +requirement to order main memory accesses. +Table~\ref{tab:henvcfg-FIOM} details the modified interpretation of +FENCE instruction bits PI, PO, SI, and SO when FIOM=1 and V=1. + +Similarly, when FIOM=1 and V=1, +if an atomic instruction that accesses a region ordered as device I/O +has its {\em aq} and/or {\em rl} bit set, then that instruction is ordered +as though it accesses both device I/O and memory. + +\begin{table}[h!] +\begin{center} +\begin{tabular}{|c|l|} +\hline +Instruction bit & Meaning when set \\ +\hline +PI & Predecessor device input and memory reads (PR implied) \\ +PO & Predecessor device output and memory writes (PW implied) \\ +\hline +SI & Successor device input and memory reads (SR implied) \\ +SO & Successor device output and memory writes (SW implied) \\ +\hline +\end{tabular} +\end{center} +\vspace{-0.1in} +\caption{% +Modified interpretation of FENCE predecessor and successor sets when +FIOM=1 and virtualization mode V=1.% +} +\label{tab:henvcfg-FIOM} +\end{table} + +The definition of the VSTCD field will be furnished by the +forthcoming Sstc extension. +Its allocation within {\tt henvcfg} may change prior to the ratification +of that extension. + +The definition of the CBZE field will be furnished by the +forthcoming Zicboz extension. +Its allocation within {\tt henvcfg} may change prior to the ratification +of that extension. + +The definitions of the CBCFE and CBIE fields will be furnished by the +forthcoming Zicbom extension. +Their allocations within {\tt henvcfg} may change prior to the ratification +of that extension. + +When HSXLEN=32, {\tt henvcfg} contains the same fields as bits 31:0 +of {\tt henvcfg} when HSXLEN=64. +Additionally, when HSXLEN=32, {\tt henvcfgh} is a 32-bit read/write register that +contains the same fields as bits 63:32 of {\tt henvcfg} when +HSXLEN=64. +Register {\tt henvcfgh} does not exist when HSXLEN=64. + \subsection{Hypervisor Counter-Enable Register ({\tt hcounteren})} The counter-enable register {\tt hcounteren} is a 32-bit register that |