fixes reading of 64bit CSR register
This commit is contained in:
parent
1672b01e62
commit
d990f1cf5d
|
@ -256,7 +256,7 @@ public:
|
||||||
return traits<BASE>::MISA_VAL&0b0100;
|
return traits<BASE>::MISA_VAL&0b0100;
|
||||||
}
|
}
|
||||||
constexpr reg_t get_pc_mask() {
|
constexpr reg_t get_pc_mask() {
|
||||||
return has_compressed()?~1:~3;
|
return has_compressed()?(reg_t)~1:(reg_t)~3;
|
||||||
}
|
}
|
||||||
|
|
||||||
riscv_hart_m_p(feature_config cfg = feature_config{});
|
riscv_hart_m_p(feature_config cfg = feature_config{});
|
||||||
|
@ -477,11 +477,11 @@ riscv_hart_m_p<BASE, FEAT>::riscv_hart_m_p(feature_config cfg)
|
||||||
}
|
}
|
||||||
// special handling & overrides
|
// special handling & overrides
|
||||||
csr_rd_cb[time] = &this_class::read_time;
|
csr_rd_cb[time] = &this_class::read_time;
|
||||||
csr_rd_cb[timeh] = &this_class::read_time;
|
if(traits<BASE>::XLEN==32) csr_rd_cb[timeh] = &this_class::read_time;
|
||||||
csr_rd_cb[cycle] = &this_class::read_cycle;
|
csr_rd_cb[cycle] = &this_class::read_cycle;
|
||||||
csr_rd_cb[cycleh] = &this_class::read_cycle;
|
if(traits<BASE>::XLEN==32) csr_rd_cb[cycleh] = &this_class::read_cycle;
|
||||||
csr_rd_cb[instret] = &this_class::read_instret;
|
csr_rd_cb[instret] = &this_class::read_instret;
|
||||||
csr_rd_cb[instreth] = &this_class::read_instret;
|
if(traits<BASE>::XLEN==32) csr_rd_cb[instreth] = &this_class::read_instret;
|
||||||
|
|
||||||
csr_rd_cb[mcycle] = &this_class::read_cycle;
|
csr_rd_cb[mcycle] = &this_class::read_cycle;
|
||||||
csr_wr_cb[mcycle] = &this_class::write_cycle;
|
csr_wr_cb[mcycle] = &this_class::write_cycle;
|
||||||
|
|
|
@ -508,11 +508,11 @@ riscv_hart_mu_p<BASE, FEAT>::riscv_hart_mu_p(feature_config cfg)
|
||||||
}
|
}
|
||||||
// special handling & overrides
|
// special handling & overrides
|
||||||
csr_rd_cb[time] = &this_class::read_time;
|
csr_rd_cb[time] = &this_class::read_time;
|
||||||
csr_rd_cb[timeh] = &this_class::read_time;
|
if(traits<BASE>::XLEN==32) csr_rd_cb[timeh] = &this_class::read_time;
|
||||||
csr_rd_cb[cycle] = &this_class::read_cycle;
|
csr_rd_cb[cycle] = &this_class::read_cycle;
|
||||||
csr_rd_cb[cycleh] = &this_class::read_cycle;
|
if(traits<BASE>::XLEN==32) csr_rd_cb[cycleh] = &this_class::read_cycle;
|
||||||
csr_rd_cb[instret] = &this_class::read_instret;
|
csr_rd_cb[instret] = &this_class::read_instret;
|
||||||
csr_rd_cb[instreth] = &this_class::read_instret;
|
if(traits<BASE>::XLEN==32) csr_rd_cb[instreth] = &this_class::read_instret;
|
||||||
|
|
||||||
csr_rd_cb[mcycle] = &this_class::read_cycle;
|
csr_rd_cb[mcycle] = &this_class::read_cycle;
|
||||||
csr_wr_cb[mcycle] = &this_class::write_cycle;
|
csr_wr_cb[mcycle] = &this_class::write_cycle;
|
||||||
|
|
Loading…
Reference in New Issue