vsiselect
Virtual Supervisor Indirect Register Select
The vsiselect register will support the value range 0..0xFFF at a minimum. A future extension may define a value range outside of this minimum range. Only if such an extension is implemented will vsiselect be required to support larger values.
Requiring a range of 0-0xFFF for vsiselect, even though most or all of the space may be reserved or inaccessible, permits a hypervisor to emulate indirectly accessed registers in this implemented range, including registers that may be standardized in the future.
It is recommended that vsiselect and siselect be implemented with the same number of bits. This avoids the creation of a virtualization hole due to observable differences between their widths.
Values of vsiselect with the most-significant bit set (bit XLEN - 1 = 1) are designated only for custom use, presumably for accessing custom registers through the alias CSRs. Values with the most-significant bit clear are designated only for standard use and are reserved until allocated to a standard architecture extension.
If XLEN is changed, the most-significant bit of vsiselect moves to the new position, retaining its value from before.
Attributes
Defining Extension |
|
---|---|
CSR Address |
0x250 |
Virtual CSR Address |
0x250 |
Length |
32 when CSR[hstatus].VSXL == 0 64 when CSR[hstatus].VSXL == 1 |
Privilege Mode |
VS |
Format
This CSR format changes dynamically.