aboutsummaryrefslogtreecommitdiff
path: root/riscv/csrs.cc
diff options
context:
space:
mode:
authorJerry Zhao <jerryz123@berkeley.edu>2024-06-21 17:23:55 -0700
committerGitHub <noreply@github.com>2024-06-21 17:23:55 -0700
commitf03e97c89fb5fa952f1a1264734aecf39619b65d (patch)
treec65e4bf6c71d8e42e5539d7650581c0168eafc75 /riscv/csrs.cc
parent3d4027a2bb559af758a2a9d624a3848ae2485453 (diff)
parentc790f73ae94d358e9493187fdbcc9053ed7af7d8 (diff)
downloadspike-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.cc10
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);
}