Skip to content

Commit 1adf60f

Browse files
committed
Fix FCSR accesses under Zfinx
1 parent ce71e75 commit 1adf60f

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

riscv/csrs.cc

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1410,8 +1410,9 @@ float_csr_t::float_csr_t(processor_t* const proc, const reg_t addr, const reg_t
14101410

14111411
void float_csr_t::verify_permissions(insn_t insn, bool write) const {
14121412
masked_csr_t::verify_permissions(insn, write);
1413-
require(STATE.sstatus->enabled(SSTATUS_FS));
1414-
if (!proc->extension_enabled('F') && !proc->extension_enabled(EXT_ZFINX))
1413+
1414+
if (!((proc->extension_enabled('F') && STATE.sstatus->enabled(SSTATUS_FS))
1415+
|| proc->extension_enabled(EXT_ZFINX)))
14151416
throw trap_illegal_instruction(insn.bits());
14161417

14171418
if (proc->extension_enabled(EXT_SMSTATEEN) && proc->extension_enabled(EXT_ZFINX)) {
@@ -1431,7 +1432,8 @@ void float_csr_t::verify_permissions(insn_t insn, bool write) const {
14311432
}
14321433

14331434
bool float_csr_t::unlogged_write(const reg_t val) noexcept {
1434-
dirty_fp_state;
1435+
if (!proc->extension_enabled(EXT_ZFINX))
1436+
dirty_fp_state;
14351437
return masked_csr_t::unlogged_write(val);
14361438
}
14371439

0 commit comments

Comments
 (0)