about summary refs log tree commit diff stats
path: root/src/dynarec/dynarec_native_pass.c
diff options
context:
space:
mode:
authorYang Liu <liuyang22@iscas.ac.cn>2025-05-20 23:17:34 +0800
committerGitHub <noreply@github.com>2025-05-20 17:17:34 +0200
commit7af5f625d7c6a27107040d8000d01e6dd4025e97 (patch)
tree7b5af8dbcf889a27cdf396823391671a84cb7d84 /src/dynarec/dynarec_native_pass.c
parenta1ac9cccc4d1a07f4c6e2650bf155902383ad424 (diff)
downloadbox64-7af5f625d7c6a27107040d8000d01e6dd4025e97.tar.gz
box64-7af5f625d7c6a27107040d8000d01e6dd4025e97.zip
[DYNAREC] Removed unnecessary volatile metadata barriers (#2653)
Diffstat (limited to 'src/dynarec/dynarec_native_pass.c')
-rw-r--r--src/dynarec/dynarec_native_pass.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/src/dynarec/dynarec_native_pass.c b/src/dynarec/dynarec_native_pass.c
index eab3e10b..1620927a 100644
--- a/src/dynarec/dynarec_native_pass.c
+++ b/src/dynarec/dynarec_native_pass.c
@@ -135,12 +135,8 @@ uintptr_t native_pass(dynarec_native_t* dyn, uintptr_t addr, int alternate, int
         }
 
         int is_opcode_volatile = box64_wine && VolatileRangesContains(ip);
-        if (is_opcode_volatile && !dyn->insts[ninst].lock_prefixed) {
-            if (dyn->insts[ninst].will_write)
-                DMB_ISH();
-            else if (dyn->insts[ninst].will_read)
-                DMB_ISHLD();
-        }
+        if (is_opcode_volatile && !dyn->insts[ninst].lock_prefixed && dyn->insts[ninst].will_write)
+            DMB_ISHST();
         #endif
         if((dyn->insts[ninst].x64.need_before&~X_PEND) && !ninst) {
             READFLAGS(dyn->insts[ninst].x64.need_before&~X_PEND);
@@ -198,12 +194,8 @@ uintptr_t native_pass(dynarec_native_t* dyn, uintptr_t addr, int alternate, int
         INST_EPILOG;
 
         #if STEP > 1
-        if (is_opcode_volatile && !dyn->insts[ninst].lock_prefixed) {
-            if (dyn->insts[ninst].will_write)
-                DMB_ISHST();
-            else if (dyn->insts[ninst].will_read)
-                DMB_ISHLD();
-        }
+        if (is_opcode_volatile && !dyn->insts[ninst].lock_prefixed && dyn->insts[ninst].will_read)
+            DMB_ISHLD();
         #endif
 
         fpu_reset_scratch(dyn);