diff options
author | Andrew Waterman <andrew@sifive.com> | 2022-12-04 22:30:29 -1000 |
---|---|---|
committer | Andrew Waterman <andrew@sifive.com> | 2022-12-04 22:34:12 -1000 |
commit | 55c90c6561cad00f6c4ee52286256990f5f93496 (patch) | |
tree | 352305c4df8d7e60df188feeef7aa77e8078e866 /riscv/decode.h | |
parent | ab3225a3ff687fda8b4180f9e4e0949a400d1247 (diff) | |
download | riscv-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.h | 2 |
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)) |