mtvec
Machine Trap Vector Control
Controls where traps jump.
Attributes
Defining Extension |
|
||||
---|---|---|---|---|---|
CSR Address |
0x305 |
||||
Length |
|
||||
Privilege Mode |
M |
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:
BASE = # Base spec says that BASE must be 4-byte aligned, which will always be the case # implementations may put further constraints on BASE when MODE != Direct # If that is the case, stvec should have an override for the implementation return csr_value.BASE; MODE = if (csr_value.MODE == 0) { if (ary_includes?<$array_size(MTVEC_MODES), 2>(MTVEC_MODES, 0)) { return csr_value.MODE; } else { return UNDEFINED_LEGAL_DETERMINISTIC; } } else if (csr_value.MODE == 1) { if (ary_includes?<$array_size(MTVEC_MODES), 2>(MTVEC_MODES, 1)) { return csr_value.MODE; } else { return UNDEFINED_LEGAL_DETERMINISTIC; } } else { return UNDEFINED_LEGAL_DETERMINISTIC; }