about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-04-15 13:57:55 +0200
committerptitSeb <sebastien.chev@gmail.com>2025-04-15 13:57:55 +0200
commit064c2b037e9d18573e62bd4bb17634192e83afd1 (patch)
treeb8261f4dd3f7fe3ba50d1d2f56d7e5782791417f
parent12a90ebe9802eadae147b6bd3ce376175e75e4b4 (diff)
downloadbox64-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.h5
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 */) { \