mcause
Machine Cause
Reports the cause of the latest exception.
Attributes
Defining Extension |
|
---|---|
CSR Address |
0x342 |
Length |
#<ConfiguredArchitecture:0x00007f75efbd67c8>-bit |
Privilege Mode |
M |
Format
This CSR format changes dynamically.
Figure 1. mcause Format when CSR[misa].MXL == 0
Figure 2. mcause Format when CSR[misa].MXL == 1
Field Summary
Name | Location | Type | Reset Value |
---|---|---|---|
* 31 when CSR[misa].MXL == 0 * 63 when CSR[misa].MXL == 1 |
RW-RH |
0 |
|
* 30:0 when CSR[misa].MXL == 0 * 62:0 when CSR[misa].MXL == 1 |
RW-RH |
0 |
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:
INT = # the write only holds if the INT/CODE combination is valid if (csr_value.INT == 1) { if (valid_interrupt_code?(csr_value.CODE)) { return 1; } return ILLEGAL_WLRL; } else { if (valid_exception_code?(csr_value.CODE)) { return 1; } return ILLEGAL_WLRL; } CODE = # the write only holds if the INT/CODE combination is valid if (csr_value.INT == 1) { if (valid_interrupt_code?(csr_value.CODE)) { return csr_value.CODE; } return ILLEGAL_WLRL; } else { if (valid_exception_code?(csr_value.CODE)) { return csr_value.CODE; } return ILLEGAL_WLRL; }