diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-12-02 22:20:02 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-12-02 22:20:02 +0100 |
| commit | 899405456bab49c3afa255ece099e1cb41e6ddf2 (patch) | |
| tree | d861d043eccd96cc2e01b8cb8a6d3f9c5db57353 | |
| parent | 40a81173f395ff3f7da28e5034a09b248dc97fb4 (diff) | |
| download | box64-899405456bab49c3afa255ece099e1cb41e6ddf2.tar.gz box64-899405456bab49c3afa255ece099e1cb41e6ddf2.zip | |
[ARM64_DYNAREC] Added optionnal memory barrier to MOVS/STOS
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_00.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_00.c b/src/dynarec/arm64/dynarec_arm64_00.c index d5e998c6..12a6d4f1 100644 --- a/src/dynarec/arm64/dynarec_arm64_00.c +++ b/src/dynarec/arm64/dynarec_arm64_00.c @@ -1397,6 +1397,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin SMWRITELOCK(lock); break; case 0xA4: + SMREAD(); if(rep) { INST_NAME("REP MOVSB"); CBZx_NEXT(xRCX); @@ -1421,8 +1422,10 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin ADDx_REG(xRSI, xRSI, x3); ADDx_REG(xRDI, xRDI, x3); } + SMWRITE(); break; case 0xA5: + SMREAD(); if(rep) { INST_NAME("REP MOVSD"); CBZx_NEXT(xRCX); @@ -1447,6 +1450,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin ADDx_REG(xRSI, xRSI, x3); ADDx_REG(xRDI, xRDI, x3); } + SMWRITE(); break; case 0xA6: switch(rep) { @@ -1562,6 +1566,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin STRB_U12(xRAX, xRDI, 0); ADDx_REG(xRDI, xRDI, x3); } + SMWRITE(); break; case 0xAB: if(rep) { @@ -1584,6 +1589,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin STRxw_U12(xRAX, xRDI, 0); ADDx_REG(xRDI, xRDI, x3); } + SMWRITE(); break; case 0xAC: if(rep) { |