diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2025-04-15 13:57:55 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2025-04-15 13:57:55 +0200 |
| commit | 064c2b037e9d18573e62bd4bb17634192e83afd1 (patch) | |
| tree | b8261f4dd3f7fe3ba50d1d2f56d7e5782791417f | |
| parent | 12a90ebe9802eadae147b6bd3ce376175e75e4b4 (diff) | |
| download | box64-064c2b037e9d18573e62bd4bb17634192e83afd1.tar.gz box64-064c2b037e9d18573e62bd4bb17634192e83afd1.zip | |
[DYNAREC] Fix on strongmem mode were last write on a seq on 1 write could be ignored
| -rw-r--r-- | src/dynarec/dynarec_helper.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/dynarec/dynarec_helper.h b/src/dynarec/dynarec_helper.h index af09f196..d8b0eb52 100644 --- a/src/dynarec/dynarec_helper.h +++ b/src/dynarec/dynarec_helper.h @@ -87,7 +87,10 @@ // An opcode writes guest memory, this need to be put after the STORE instruction manually. It will also end the SEQ automaticaly on last_write immediatly #define SMWRITE() \ do { \ - if(dyn->insts[ninst].last_write) {SMEND();} else { \ + if(dyn->insts[ninst].last_write) { \ + dyn->smwrite = 1; \ + SMEND(); \ + } else { \ /* Put a barrier at every third memory write. */ \ if (BOX64DRENV(dynarec_strongmem) >= STRONGMEM_SEQ_WRITE) { \ if (++dyn->smwrite >= 3 /* Every third memory write */) { \ |