vsireg6
Virtual Supervisor Indirect Register Alias 6
The vsireg6 CSR is one of several alias registers used to indirectly access virtual supervisor-level CSRs in VS-mode or VU-mode.
The alias mechanism allows indirect CSR access, which helps in virtualization and future extensibility.
A virtual instruction exception is raised for attempts from VS-mode or VU-mode
to directly access vsiselect or vsireg6, or from VU-mode to access siselect or siregX.
The behavior of accesses to vsireg6 when vsiselect holds a value that is not implemented at the HS level is UNSPECIFIED.
Implementations are recommended to raise an illegal instruction exception for such accesses to unimplemented targets.
Attributes
CSR Address |
0x257 |
|---|---|
Virtual CSR Address |
0x257 |
Defining extension |
|
Length |
64-bit |
Privilege Mode |
VS |
Fields
VALUE
- Location
-
vsireg6[63:0] - Description
-
The data read or written from the register selected by the current value of vsiselect.
- Type
RW |
Read-Write Field is writable by software. Any value that fits in the field is acceptable and shall be retained for subsequent reads. |
- Reset value
-
UNDEFINED_LEGAL
- Software write
-
This field has special behavior when written by software (e.g., through csrrw).
When software tries to write
csr_value, the field will be written with the return value of the function below.Csr handle = indirect_csr_lookup(PrivilegeMode::VS, CSR[vsiselect].VALUE, 6); if (!handle.valid) { unimplemented_csr($encoding); } if (!handle.writable) { raise(ExceptionCode::IllegalInstruction, mode(), $encoding); } csr_sw_write(handle, csr_value.VALUE); return csr_hw_read(handle);
Software read
This CSR may return a value that is different from what is stored in hardware.
-
Pruned
-
Original
Csr handle = indirect_csr_lookup(PrivilegeMode::VS, CSR[vsiselect].VALUE, 6);
if (!handle.valid) {
unimplemented_csr($encoding);
}
return csr_sw_read(handle);
Csr handle = indirect_csr_lookup(PrivilegeMode::VS, CSR[vsiselect].VALUE, 6);
if (!handle.valid) {
unimplemented_csr($encoding);
}
return csr_sw_read(handle);