|
|
|
@ -488,11 +488,12 @@ bool sstatus_csr_t::enabled(const reg_t which) { |
|
|
|
misa_csr_t::misa_csr_t(processor_t* const proc, const reg_t addr, const reg_t max_isa): |
|
|
|
basic_csr_t(proc, addr, max_isa), |
|
|
|
max_isa(max_isa), |
|
|
|
write_mask(max_isa & (0 // allow MAFDCH bits in MISA to be modified
|
|
|
|
write_mask(max_isa & (0 // allow MAFDQCH bits in MISA to be modified
|
|
|
|
| (1L << ('M' - 'A')) |
|
|
|
| (1L << ('A' - 'A')) |
|
|
|
| (1L << ('F' - 'A')) |
|
|
|
| (1L << ('D' - 'A')) |
|
|
|
| (1L << ('Q' - 'A')) |
|
|
|
| (1L << ('C' - 'A')) |
|
|
|
| (1L << ('H' - 'A')) |
|
|
|
) |
|
|
|
@ -510,6 +511,7 @@ bool misa_csr_t::unlogged_write(const reg_t val) noexcept { |
|
|
|
|
|
|
|
reg_t adjusted_val = val; |
|
|
|
adjusted_val = dependency(adjusted_val, 'D', 'F'); |
|
|
|
adjusted_val = dependency(adjusted_val, 'Q', 'D'); |
|
|
|
|
|
|
|
const reg_t old_misa = read(); |
|
|
|
const bool prev_h = old_misa & (1L << ('H' - 'A')); |
|
|
|
|