misa
Machine ISA Control
Reports the XLEN and "major" extensions supported by the ISA.
Attributes
Defining Extension |
|
---|---|
CSR Address |
0x301 |
Length |
32 when CSR[misa].MXL == 0 64 when CSR[misa].MXL == 1 |
Privilege Mode |
M |
Format
This CSR format changes dynamically.
Field Summary
Name | Location | Type | Reset Value |
---|---|---|---|
* 31:30 when CSR[misa].MXL == 0 * 63:62 when CSR[misa].MXL == 1 |
RO |
UNDEFINED_LEGAL |
|
0 |
[when,"implemented?(ExtensionName::A) && MUTABLE_MISA_A"] RW [when,"!implemented?(ExtensionName::A) && MUTABLE_MISA_A"] RO |
UNDEFINED_LEGAL |
|
1 |
[when,"implemented?(ExtensionName::B) && MUTABLE_MISA_B"] RW [when,"!implemented?(ExtensionName::B) && MUTABLE_MISA_B"] RO |
UNDEFINED_LEGAL |
|
2 |
[when,"implemented?(ExtensionName::C) && MUTABLE_MISA_C"] RW [when,"!implemented?(ExtensionName::C) && MUTABLE_MISA_C"] RO |
UNDEFINED_LEGAL |
|
3 |
[when,"implemented?(ExtensionName::D) && MUTABLE_MISA_D"] RW [when,"!implemented?(ExtensionName::D) && MUTABLE_MISA_D"] RO |
UNDEFINED_LEGAL |
|
5 |
[when,"implemented?(ExtensionName::F) && MUTABLE_MISA_F"] RW [when,"!implemented?(ExtensionName::F) && MUTABLE_MISA_F"] RO |
UNDEFINED_LEGAL |
|
6 |
[when,"(((implemented?(ExtensionName::A) && MUTABLE_MISA_A || implemented?(ExtensionName::M) && MUTABLE_MISA_M) || implemented?(ExtensionName::F) && MUTABLE_MISA_F) || implemented?(ExtensionName::D) && MUTABLE_MISA_D)"] RO-H [when,"!(((implemented?(ExtensionName::A) && MUTABLE_MISA_A || implemented?(ExtensionName::M) && MUTABLE_MISA_M) || implemented?(ExtensionName::F) && MUTABLE_MISA_F) || implemented?(ExtensionName::D) && MUTABLE_MISA_D)"] RO |
UNDEFINED_LEGAL |
|
7 |
[when,"implemented?(ExtensionName::H) && MUTABLE_MISA_H"] RW [when,"!implemented?(ExtensionName::H) && MUTABLE_MISA_H"] RO |
UNDEFINED_LEGAL |
|
8 |
RO |
1 |
|
12 |
[when,"implemented?(ExtensionName::M) && MUTABLE_MISA_M"] RW [when,"!implemented?(ExtensionName::M) && MUTABLE_MISA_M"] RO |
UNDEFINED_LEGAL |
|
18 |
[when,"implemented?(ExtensionName::S) && MUTABLE_MISA_S"] RW [when,"!implemented?(ExtensionName::S) && MUTABLE_MISA_S"] RO |
UNDEFINED_LEGAL |
|
20 |
[when,"implemented?(ExtensionName::U) && MUTABLE_MISA_U"] RW [when,"!implemented?(ExtensionName::U) && MUTABLE_MISA_U"] RO |
UNDEFINED_LEGAL |
|
21 |
[when,"implemented?(ExtensionName::V) && MUTABLE_MISA_V"] RW [when,"!implemented?(ExtensionName::V) && MUTABLE_MISA_V"] RO |
UNDEFINED_LEGAL |
Software write
This CSR may store a value that is different from what software attempts to write.
When a software write occurs (e.g., through csrrw), the following determines the written value:
MXL = csr_value.MXL A = csr_value.A B = csr_value.B C = csr_value.C D = csr_value.D F = if (csr_value.F == 0 && csr_value.D == 1) { return UNDEFINED_LEGAL_DETERMINISTIC; } # fall-through; write the intended value return csr_value.F; G = csr_value.G H = csr_value.H I = csr_value.I M = csr_value.M S = csr_value.S U = csr_value.U V = csr_value.V