Skip to content

Commit

Permalink
Fix FCSR accesses under Zfinx
Browse files Browse the repository at this point in the history
  • Loading branch information
aswaterman committed Oct 31, 2024
1 parent ce71e75 commit 1adf60f
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions riscv/csrs.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1410,8 +1410,9 @@ float_csr_t::float_csr_t(processor_t* const proc, const reg_t addr, const reg_t

void float_csr_t::verify_permissions(insn_t insn, bool write) const {
masked_csr_t::verify_permissions(insn, write);
require(STATE.sstatus->enabled(SSTATUS_FS));
if (!proc->extension_enabled('F') && !proc->extension_enabled(EXT_ZFINX))

if (!((proc->extension_enabled('F') && STATE.sstatus->enabled(SSTATUS_FS))
|| proc->extension_enabled(EXT_ZFINX)))
throw trap_illegal_instruction(insn.bits());

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

bool float_csr_t::unlogged_write(const reg_t val) noexcept {
dirty_fp_state;
if (!proc->extension_enabled(EXT_ZFINX))
dirty_fp_state;
return masked_csr_t::unlogged_write(val);
}

Expand Down

0 comments on commit 1adf60f

Please sign in to comment.