diff options
author | Andrew Waterman <andrew@sifive.com> | 2022-01-10 14:34:16 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-10 14:34:16 -0800 |
commit | e93b9cbbbcd3ad0a02ae298e9f1a2d98d3ac0153 (patch) | |
tree | 9ee8051afa46e09d3c2f349cc41107b21e8098c2 /riscv/decode.h | |
parent | d1a3a4255295b742728b8c851a222cfbf06e8116 (diff) | |
parent | fc572daaef35fdc081466e6a67413b1f3b4d6a3e (diff) | |
download | riscv-isa-sim-e93b9cbbbcd3ad0a02ae298e9f1a2d98d3ac0153.zip riscv-isa-sim-e93b9cbbbcd3ad0a02ae298e9f1a2d98d3ac0153.tar.gz riscv-isa-sim-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.h | 6 |
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) ({ \ |