diff --git a/vendor/google_riscv-dv/scripts/gen_csr_test.py b/vendor/google_riscv-dv/scripts/gen_csr_test.py index 3768966dc3..78c752f11d 100644 --- a/vendor/google_riscv-dv/scripts/gen_csr_test.py +++ b/vendor/google_riscv-dv/scripts/gen_csr_test.py @@ -349,15 +349,18 @@ def gen_csr_instr(original_csr_map, csr_instructions, xlen, csr_write_fields, csr_read_mask))) else: + safe_rs1_val = csr_val.copy() + csr_write(rand_rs1_val, safe_rs1_val, csr_write_fields) + first_li = "\tli {}, 0x{}\n".format(source_reg, - rand_rs1_val.hex) + safe_rs1_val.hex) csr_inst = "\t{} {}, {}, {}\n".format(op, dest_reg, csr_address, source_reg) predict_li = ("\tli {}, " "{}\n".format(source_reg, predict_csr_val(op, - rand_rs1_val, + safe_rs1_val, csr_val, csr_write_fields, csr_read_mask))) diff --git a/vendor/patches/google_riscv-dv/0001-mask-readonly-csr-fields.patch b/vendor/patches/google_riscv-dv/0001-mask-readonly-csr-fields.patch new file mode 100644 index 0000000000..13f1b6244d --- /dev/null +++ b/vendor/patches/google_riscv-dv/0001-mask-readonly-csr-fields.patch @@ -0,0 +1,25 @@ +diff --git a/vendor/google_riscv-dv/scripts/gen_csr_test.py b/vendor/google_riscv-dv/scripts/gen_csr_test.py +index ca4be2a6..36aec705 100644 +--- a/vendor/google_riscv-dv/scripts/gen_csr_test.py ++++ b/vendor/google_riscv-dv/scripts/gen_csr_test.py +@@ -351,15 +351,18 @@ def gen_csr_instr(original_csr_map, csr_instructions, xlen, + csr_write_fields, + csr_read_mask))) + else: ++ safe_rs1_val = csr_val.copy() ++ csr_write(rand_rs1_val, safe_rs1_val, csr_write_fields) ++ + first_li = "\tli {}, 0x{}\n".format(source_reg, +- rand_rs1_val.hex) ++ safe_rs1_val.hex) + csr_inst = "\t{} {}, {}, {}\n".format(op, dest_reg, + csr_address, + source_reg) + predict_li = ("\tli {}, " + "{}\n".format(source_reg, + predict_csr_val(op, +- rand_rs1_val, ++ safe_rs1_val, + csr_val, + csr_write_fields, + csr_read_mask)))