diff --git a/model/riscv_insts_aext.sail b/model/riscv_insts_aext.sail index c3078520..8953efb0 100644 --- a/model/riscv_insts_aext.sail +++ b/model/riscv_insts_aext.sail @@ -95,9 +95,9 @@ function clause execute(LOADRES(aq, rl, rs1, width, rd)) = { TR_Address(addr, _) => match mem_read(Read(Data), addr, width_bytes, aq, aq & rl, true) { MemValue(result) => { - let load_after_match : bool = instrDataMatch(cur_privilege, zero_extend(vaddr), zero_extend(X(rd)), matchSize_of_wordWidth(width), LOAD_MATCH_AFTER); load_reservation(addr); X(rd) = sign_extend(result); + let load_after_match : bool = instrDataMatch(cur_privilege, zero_extend(vaddr), zero_extend(X(rd)), matchSize_of_wordWidth(width), LOAD_MATCH_AFTER); RETIRE_SUCCESS }, MemException(e) => { handle_mem_exception(vaddr, e); RETIRE_FAIL } diff --git a/model/riscv_insts_base.sail b/model/riscv_insts_base.sail index 328b50ff..fc0e3a90 100644 --- a/model/riscv_insts_base.sail +++ b/model/riscv_insts_base.sail @@ -342,8 +342,8 @@ function clause execute(LOAD(imm, rs1, rd, is_unsigned, width, aq, rl)) = { match mem_read(Read(Data), paddr, width_bytes, aq, rl, false) { MemValue(result) => { - let load_after_match : bool = instrDataMatch(cur_privilege, zero_extend(vaddr), zero_extend(X(rd)), matchSize_of_wordWidth(width), LOAD_MATCH_AFTER); X(rd) = extend_value(is_unsigned, result); + let load_after_match : bool = instrDataMatch(cur_privilege, zero_extend(vaddr), zero_extend(X(rd)), matchSize_of_wordWidth(width), LOAD_MATCH_AFTER); RETIRE_SUCCESS }, MemException(e) => { handle_mem_exception(vaddr, e); RETIRE_FAIL },