mireg6
Machine Indirect Register Alias 6
The mireg6 machine indirect alias CSR is used to access register state indirectly upon a read or write, as determined by the value of miselect.
The behavior upon accessing mireg6 from M-mode, while miselect holds a value that is not implemented, is UNSPECIFIED.
It is expected that implementations will typically raise an illegal instruction exception for such accesses, so that, for example, they can be identified as software bugs. Platform specs, profile specs, and/or the Privileged ISA spec may place more restrictions on behavior for such accesses.
Attempts to access mireg6 while miselect holds a number in an allocated and implemented range results in a specific behavior that, for each combination of miselect and mireg6, is defined by the extension to which the miselect value is allocated.
Ordinarily, mireg6 will access register state, access read-only 0 state, or raise an illegal instruction exception.
Fields
VALUE
- Location
-
mireg6[63:0] - Description
-
Register state of the CSR selected by the current miselect value
- 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::M, CSR[miselect].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::M, CSR[miselect].VALUE, 6);
if (!handle.valid) {
unimplemented_csr($encoding);
}
return csr_sw_read(handle);
Csr handle = indirect_csr_lookup(PrivilegeMode::M, CSR[miselect].VALUE, 6);
if (!handle.valid) {
unimplemented_csr($encoding);
}
return csr_sw_read(handle);