aboutsummaryrefslogtreecommitdiff
path: root/riscv/decode.h
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2022-12-04 22:30:29 -1000
committerAndrew Waterman <andrew@sifive.com>2022-12-04 22:34:12 -1000
commit55c90c6561cad00f6c4ee52286256990f5f93496 (patch)
tree352305c4df8d7e60df188feeef7aa77e8078e866 /riscv/decode.h
parentab3225a3ff687fda8b4180f9e4e0949a400d1247 (diff)
downloadriscv-isa-sim-55c90c6561cad00f6c4ee52286256990f5f93496.zip
riscv-isa-sim-55c90c6561cad00f6c4ee52286256990f5f93496.tar.gz
riscv-isa-sim-55c90c6561cad00f6c4ee52286256990f5f93496.tar.bz2
Make require_novirt macro an expression, not a statement
This improves composability by allowing its use in other expressions.
Diffstat (limited to 'riscv/decode.h')
-rw-r--r--riscv/decode.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/riscv/decode.h b/riscv/decode.h
index 2bf9ddf..0acf651 100644
--- a/riscv/decode.h
+++ b/riscv/decode.h
@@ -290,7 +290,7 @@ do { \
(((reg) & ~(std::remove_cv<decltype(reg)>::type)(mask)) | (((std::remove_cv<decltype(reg)>::type)(val) * ((mask) & ~((mask) << 1))) & (std::remove_cv<decltype(reg)>::type)(mask)))
#define require_privilege(p) require(STATE.prv >= (p))
-#define require_novirt() if (unlikely(STATE.v)) throw trap_virtual_instruction(insn.bits())
+#define require_novirt() (unlikely(STATE.v) ? throw trap_virtual_instruction(insn.bits()) : (void) 0)
#define require_rv64 require(xlen == 64)
#define require_rv32 require(xlen == 32)
#define require_extension(s) require(p->extension_enabled(s))