diff options
author | Jerry Zhao <jerryz123@berkeley.edu> | 2024-06-21 17:23:55 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-21 17:23:55 -0700 |
commit | f03e97c89fb5fa952f1a1264734aecf39619b65d (patch) | |
tree | c65e4bf6c71d8e42e5539d7650581c0168eafc75 /riscv/csrs.cc | |
parent | 3d4027a2bb559af758a2a9d624a3848ae2485453 (diff) | |
parent | c790f73ae94d358e9493187fdbcc9053ed7af7d8 (diff) | |
download | spike-f03e97c89fb5fa952f1a1264734aecf39619b65d.zip spike-f03e97c89fb5fa952f1a1264734aecf39619b65d.tar.gz spike-f03e97c89fb5fa952f1a1264734aecf39619b65d.tar.bz2 |
Merge pull request #1701 from riscv-software-src/zvl_zve
Correctly determine vector capability from v/zve/zvl ISA strings, remove --varch
Diffstat (limited to 'riscv/csrs.cc')
-rw-r--r-- | riscv/csrs.cc | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/riscv/csrs.cc b/riscv/csrs.cc index 8d7737f..02a2c4f 100644 --- a/riscv/csrs.cc +++ b/riscv/csrs.cc @@ -411,9 +411,9 @@ base_status_csr_t::base_status_csr_t(processor_t* const proc, const reg_t addr): reg_t base_status_csr_t::compute_sstatus_write_mask() const noexcept { // If a configuration has FS bits, they will always be accessible no // matter the state of misa. - const bool has_fs = (proc->extension_enabled('S') || proc->extension_enabled('F') - || proc->extension_enabled('V')) && !proc->extension_enabled(EXT_ZFINX); - const bool has_vs = proc->extension_enabled('V'); + const bool has_fs = (proc->extension_enabled('S') || proc->extension_enabled('F')) && !proc->extension_enabled(EXT_ZFINX); + // Implementations w/o V may still have mstatus.vs, + const bool has_vs = proc->any_vector_extensions(); return 0 | (proc->extension_enabled('S') ? (SSTATUS_SIE | SSTATUS_SPIE | SSTATUS_SPP) : 0) | (has_page ? (SSTATUS_SUM | SSTATUS_MXR) : 0) @@ -1429,8 +1429,6 @@ vector_csr_t::vector_csr_t(processor_t* const proc, const reg_t addr, const reg_ void vector_csr_t::verify_permissions(insn_t insn, bool write) const { require_vector_vs; - if (!proc->extension_enabled('V')) - throw trap_illegal_instruction(insn.bits()); basic_csr_t::verify_permissions(insn, write); } @@ -1452,8 +1450,6 @@ vxsat_csr_t::vxsat_csr_t(processor_t* const proc, const reg_t addr): void vxsat_csr_t::verify_permissions(insn_t insn, bool write) const { require_vector_vs; - if (!proc->extension_enabled('V')) - throw trap_illegal_instruction(insn.bits()); masked_csr_t::verify_permissions(insn, write); } |