aboutsummaryrefslogtreecommitdiff
path: root/riscv/decode.h
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2022-01-10 14:34:16 -0800
committerGitHub <noreply@github.com>2022-01-10 14:34:16 -0800
commite93b9cbbbcd3ad0a02ae298e9f1a2d98d3ac0153 (patch)
tree9ee8051afa46e09d3c2f349cc41107b21e8098c2 /riscv/decode.h
parentd1a3a4255295b742728b8c851a222cfbf06e8116 (diff)
parentfc572daaef35fdc081466e6a67413b1f3b4d6a3e (diff)
downloadspike-e93b9cbbbcd3ad0a02ae298e9f1a2d98d3ac0153.zip
spike-e93b9cbbbcd3ad0a02ae298e9f1a2d98d3ac0153.tar.gz
spike-e93b9cbbbcd3ad0a02ae298e9f1a2d98d3ac0153.tar.bz2
Merge pull request #899 from riscv-software-src/rv32e
Add RV32E/RV64E base ISA support
Diffstat (limited to 'riscv/decode.h')
-rw-r--r--riscv/decode.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/riscv/decode.h b/riscv/decode.h
index e709d03..8b372c2 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) ({ \