Skip to content

Commit

Permalink
riscv64: check SPF before sc vaddr compare
Browse files Browse the repository at this point in the history
  • Loading branch information
AugustusWillisWang committed Jul 15, 2021
1 parent cd497c9 commit a66d766
Showing 1 changed file with 7 additions and 0 deletions.
7 changes: 7 additions & 0 deletions src/isa/riscv64/instr/rva/amo.c
@@ -1,4 +1,5 @@
#include <rtl/rtl.h>
#include "../local-include/intr.h"

__attribute__((cold))
def_rtl(amo_slow_path, rtlreg_t *dest, const rtlreg_t *src1, const rtlreg_t *src2) {
Expand All @@ -16,6 +17,12 @@ def_rtl(amo_slow_path, rtlreg_t *dest, const rtlreg_t *src1, const rtlreg_t *src
if (success) {
rtl_sm(s, src2, src1, 0, width, MMU_DYNAMIC);
cpu.lr_valid = 0;
} else {
// Even if scInvalid, SPF (if raised) also needs to be reported
if(isa_mmu_check(*dsrc1, width, MEM_TYPE_WRITE) == MMU_TRANSLATE) {
isa_mmu_translate(*dsrc1, width, MEM_TYPE_WRITE);
}
return_on_mem_ex();
}
rtl_li(s, dest, !success);
return;
Expand Down

0 comments on commit a66d766

Please sign in to comment.