summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--riscv/riscv.sail4
-rw-r--r--riscv/riscv_sail.h1
-rw-r--r--riscv/riscv_sim.c1
3 files changed, 4 insertions, 2 deletions
diff --git a/riscv/riscv.sail b/riscv/riscv.sail
index 2cad614e..71ad0137 100644
--- a/riscv/riscv.sail
+++ b/riscv/riscv.sail
@@ -851,7 +851,7 @@ function clause execute(LOADRES(aq, rl, rs1, width, rd)) =
}
mapping clause assembly = LOADRES(aq, rl, rs1, size, rd)
- <-> "lr." ^ maybe_aq(aq) ^ maybe_rl(rl) ^ size_mnemonic(size) ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1)
+ <-> "lr" ^ maybe_aq(aq) ^ maybe_rl(rl) ^ size_mnemonic(size) ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1)
/* ****************************************************************** */
union clause ast = STORECON : (bool, bool, regbits, regbits, word_width, regbits)
@@ -916,7 +916,7 @@ function clause execute (STORECON(aq, rl, rs2, rs1, width, rd)) = {
}
}
-mapping clause assembly = STORECON(aq, rl, rs2, rs1, size, rd) <-> "sc." ^ maybe_aq(aq) ^ maybe_rl(rl) ^ size_mnemonic(size) ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) ^ sep() ^ reg_name(rs2)
+mapping clause assembly = STORECON(aq, rl, rs2, rs1, size, rd) <-> "sc" ^ maybe_aq(aq) ^ maybe_rl(rl) ^ size_mnemonic(size) ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) ^ sep() ^ reg_name(rs2)
/* ****************************************************************** */
union clause ast = AMO : (amoop, bool, bool, regbits, regbits, word_width, regbits)
diff --git a/riscv/riscv_sail.h b/riscv/riscv_sail.h
index 17afedbd..f2569b3b 100644
--- a/riscv/riscv_sail.h
+++ b/riscv/riscv_sail.h
@@ -31,6 +31,7 @@ extern mach_bits
zx16, zx17, zx18, zx19, zx20, zx21, zx22, zx23,
zx24, zx25, zx26, zx27, zx28, zx29, zx30, zx31;
+extern mach_bits zmstatus;
extern mach_bits zmepc, zmtval;
extern mach_bits zsepc, zstval;
diff --git a/riscv/riscv_sim.c b/riscv/riscv_sim.c
index 17e426eb..79c353f9 100644
--- a/riscv/riscv_sim.c
+++ b/riscv/riscv_sim.c
@@ -247,6 +247,7 @@ int compare_states(struct tv_spike_t *s)
passed &= tv_check_csr(s, CSR_MCAUSE, zmcause.zMcause_chunk_0);
passed &= tv_check_csr(s, CSR_MEPC, zmepc);
passed &= tv_check_csr(s, CSR_MTVAL, zmtval);
+ passed &= tv_check_csr(s, CSR_MSTATUS, zmstatus);
passed &= tv_check_csr(s, CSR_SCAUSE, zscause.zMcause_chunk_0);
passed &= tv_check_csr(s, CSR_SEPC, zsepc);