Implement clearing-misa.C-while-PC-is-misaligned proposal
[riscv-isa-sim.git] / riscv / insns / csrrs.h
index 675cb86e7a8476b969189e5445113036048b81d6..4e8bde96379935755ef87b32903e5aadd81a5227 100644 (file)
@@ -1,4 +1,8 @@
-int csr = validate_csr(insn.csr(), insn.rs1() != 0);
-reg_t old = p->get_pcr(csr);
-p->set_pcr(csr, old | RS1);
-WRITE_RD(sext_xprlen(old));
+bool write = insn.rs1() != 0;
+int csr = validate_csr(insn.csr(), write);
+reg_t old = p->get_csr(csr);
+if (write) {
+  p->set_csr(csr, old | RS1);
+}
+WRITE_RD(sext_xlen(old));
+serialize();