CSR Bit Fields

RISC-V vsiselect CSR Register

Address 0x250Privilege Hypervisor direct / VS aliasAccess HRW / current XLEN, not VSXLENHypervisor and virtualization CSRs

vsiselect is the Sscsrind/H virtual-supervisor indirect CSR selector; its select value determines the state accessed through the alias CSRs.

Field Map

Understand vsiselect By Bit Fields

1 key fields
XLEN-1:0

SELECT

WARL

WARL selector; supports at least 0..0xFFF. Select values with the MSB set are only for custom use, while MSB-clear values are standard space reserved until allocated to standard extensions; if XLEN changes, the MSB moves to the new position while retaining its value.

SELECT (bits XLEN-1:0) — WARL selector; supports at least 0..0xFFF. Select values with the MSB set are only for custom use, while MSB-clear values are standard space reserved until allocated to standard extensions; if XLEN changes, the MSB moves to the new position while retaining its value.

What This Field Controls

  • - WARL selector; supports at least 0..0xFFF. Select values with the MSB set are only for custom use, while MSB-clear values are standard space reserved until allocated to standard extensions; if XLEN changes, the MSB moves to the new position while retaining its value.

Common Values

This field is better understood together with surrounding context than as a fixed memorized enumeration.

Open Official Manual
Official Basis & Search Notes

vsiselect selects VS indirect CSR state. Its separate address is for direct M/HS access; a V=1 guest normally reaches VS state through the siselect/sireg* aliases.

vsiselect address/access/width: 0x250, HRW, current XLEN, not VSXLEN.
vsiselect supports at least 0..0xFFF; select values with the MSB set are only for custom use, and the MSB moves with XLEN.
Direct VS/VU access to vsiselect/vsireg* raises a virtual-instruction exception; VS access through siselect/sireg* aliases uses these rules.
vsiselect is WARL; alias access for unimplemented select values may be UNSPECIFIED or defined by the allocating extension.

What To Check First When Reading This CSR

  • - vsiselect's separate CSR address is HRW in the official table; this VS CSR is required when H is implemented.
  • - Direct VS/VU access to vsiselect or vsireg* raises a virtual-instruction exception; a guest normally uses the siselect/sireg* aliases to reach the same VS state.
  • - If vsiselect selects a value not implemented at HS level, M/HS access to vsireg* or VS access through the sireg* alias is UNSPECIFIED.
  • - mstateen0.CSRIND/hstateen0.CSRIND can first restrict indirect-CSR access; when selecting CTR state at 0x200..0x2FF, mstateen0.CTR/hstateen0.CTR can also restrict access.

Risk Checks Before Writing

  • - Do not treat vsireg* as a memory window; read/write, RO0, or exception behavior for each select value and alias CSR is defined by the extension that allocated the range.
  • - CTR entry state has no separate V=1 copy; when vsiselect=0x200..0x2FF, accesses reach the same CTR entry-register state as the analogous sireg*.

Put It Back Into A Real Flow

1

Confirm that H and Sscsrind are implemented, and check CSRIND state-enable gates.

2

Write or confirm vsiselect; the standard select space supports at least 0..0xFFF, while values with the MSB set are only for custom use.

3

Use vsiselect to access state defined by the selected extension; CTR entries use 0x200..0x2FF to select logical entries 0..255.

FAQ

What selector range does vsiselect support?

vsiselect supports at least 0..0xFFF; values with the MSB set are only for custom use, and MSB-clear values are standard space reserved until allocated to standard extensions.

Can VS-mode directly access vsiselect?

No. Direct VS/VU access to vsiselect or vsireg* raises a virtual-instruction exception; a guest should use the siselect/sireg* aliases.