From fc572daaef35fdc081466e6a67413b1f3b4d6a3e Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Thu, 6 Jan 2022 17:19:11 -0800 Subject: Support RV32E/RV64E base ISAs --- riscv/decode.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'riscv/decode.h') diff --git a/riscv/decode.h b/riscv/decode.h index 3b3cf54..0365047 100644 --- a/riscv/decode.h +++ b/riscv/decode.h @@ -175,7 +175,8 @@ private: #define MMU (*p->get_mmu()) #define STATE (*p->get_state()) #define FLEN (p->get_flen()) -#define READ_REG(reg) STATE.XPR[reg] +#define CHECK_REG(reg) ((void) 0) +#define READ_REG(reg) ({ CHECK_REG(reg); STATE.XPR[reg]; }) #define READ_FREG(reg) STATE.FPR[reg] #define RD READ_REG(insn.rd()) #define RS1 READ_REG(insn.rs1()) @@ -184,7 +185,7 @@ private: #define WRITE_RD(value) WRITE_REG(insn.rd(), value) #ifndef RISCV_ENABLE_COMMITLOG -# define WRITE_REG(reg, value) STATE.XPR.write(reg, value) +# define WRITE_REG(reg, value) ({ CHECK_REG(reg); STATE.XPR.write(reg, value); }) # define WRITE_FREG(reg, value) DO_WRITE_FREG(reg, freg(value)) # define WRITE_VSTATUS #else @@ -197,6 +198,7 @@ private: # define WRITE_REG(reg, value) ({ \ reg_t wdata = (value); /* value may have side effects */ \ STATE.log_reg_write[(reg) << 4] = {wdata, 0}; \ + CHECK_REG(reg); \ STATE.XPR.write(reg, wdata); \ }) # define WRITE_FREG(reg, value) ({ \ -- cgit v1.1