-int csr = validate_csr(insn.csr(), true);
+bool write = insn.rs1() != 0;
+int csr = validate_csr(insn.csr(), write);
reg_t old = p->get_csr(csr);
-p->set_csr(csr, old | insn.rs1());
+if (write) {
+ p->set_csr(csr, old | insn.rs1());
+}
WRITE_RD(sext_xlen(old));
+serialize();