Skip to content

Commit a3feb90

Browse files
committed
Fix envcfg check when S-mode is not available
1 parent 58da6a2 commit a3feb90

File tree

2 files changed

+2
-1
lines changed

2 files changed

+2
-1
lines changed

riscv/csrs.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1846,6 +1846,7 @@ ssp_csr_t::ssp_csr_t(processor_t* const proc, const reg_t addr, const reg_t mask
18461846
void ssp_csr_t::verify_permissions(insn_t insn, bool write) const {
18471847
masked_csr_t::verify_permissions(insn, write);
18481848
DECLARE_XENVCFG_VARS(SSE);
1849+
auto p = proc; // To match macro usage
18491850
require_envcfg(SSE);
18501851
}
18511852

riscv/decode_macros.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ static inline bool is_aligned(const unsigned val, const unsigned pos)
193193
#define require_envcfg(field) \
194194
do { \
195195
if (((STATE.prv != PRV_M) && (m##field == 0)) || \
196-
((STATE.prv == PRV_U && !STATE.v) && (s##field == 0))) \
196+
(p->extension_enabled('S') && (STATE.prv == PRV_U && !STATE.v) && (s##field == 0))) \
197197
throw trap_illegal_instruction(insn.bits()); \
198198
else if (STATE.v && ((h##field == 0) || \
199199
((STATE.prv == PRV_U) && (s##field == 0)))) \

0 commit comments

Comments
 (0)