about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-02-12 19:27:39 +0100
committerptitSeb <sebastien.chev@gmail.com>2025-02-12 19:27:39 +0100
commit0c17b55e28dc149e0d6ea146132484eba3787341 (patch)
treec38a41a96864f38087595d7ca30b44dc4127fcb9 /src
parente2f4ab7700d8fc4432131b27a53fb427243ca1ae (diff)
downloadbox64-0c17b55e28dc149e0d6ea146132484eba3787341.tar.gz
box64-0c17b55e28dc149e0d6ea146132484eba3787341.zip
[ARM64_DYNAREC] Fixed some issue with DF and mayset opcodes
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_helper.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_helper.h b/src/dynarec/arm64/dynarec_arm64_helper.h
index 19f432e0..5e8a2e57 100644
--- a/src/dynarec/arm64/dynarec_arm64_helper.h
+++ b/src/dynarec/arm64/dynarec_arm64_helper.h
@@ -1086,14 +1086,15 @@
 #endif
 
 #define SET_DFNONE()                                     \
-    do {                                                 \
+    if(!dyn->insts[ninst].x64.may_set) {                 \
         dyn->f.dfnone_here = 1;                          \
         if (!dyn->f.dfnone) {                            \
             STRw_U12(wZR, xEmu, offsetof(x64emu_t, df)); \
             dyn->f.dfnone = 1;                           \
         }                                                \
-    } while (0);
+    }
 #define SET_DF(S, N)                                                                                                            \
+    if(!dyn->insts[ninst].x64.may_set) {                                                                                        \
     if ((N) != d_none) {                                                                                                        \
         MOVZw(S, (N));                                                                                                          \
         STRw_U12(S, xEmu, offsetof(x64emu_t, df));                                                                              \
@@ -1104,7 +1105,8 @@
         }                                                                                                                       \
         dyn->f.dfnone = 0;                                                                                                      \
     } else                                                                                                                      \
-        SET_DFNONE()
+        SET_DFNONE();                                                                                                           \
+    }
 #ifndef SET_NODF
 #define SET_NODF()          dyn->f.dfnone = 0
 #endif