X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=riscv%2Finsns%2Fcsrrci.h;h=4d83cc0617edd871ebb9ad823d86a4663c310ce9;hb=4299874ad4b07ef457776513a64e5b2397a6a75e;hp=993f2d832ba8f6c0b2f42ea0698289ed2d764187;hpb=ea58df801f36605b462783a61b5266bdd9a40eb0;p=riscv-isa-sim.git diff --git a/riscv/insns/csrrci.h b/riscv/insns/csrrci.h index 993f2d8..4d83cc0 100644 --- a/riscv/insns/csrrci.h +++ b/riscv/insns/csrrci.h @@ -1,4 +1,8 @@ -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 & ~(reg_t)insn.rs1()); +if (write) { + p->set_csr(csr, old & ~(reg_t)insn.rs1()); +} WRITE_RD(sext_xlen(old)); +serialize();