Browse Source

Make require_novirt macro an expression, not a statement

This improves composability by allowing its use in other expressions.
pull/1162/head
Andrew Waterman 4 years ago
parent
commit
55c90c6561
  1. 2
      riscv/decode.h

2
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))

Loading…
Cancel
Save