From 7af5f625d7c6a27107040d8000d01e6dd4025e97 Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Tue, 20 May 2025 23:17:34 +0800 Subject: [DYNAREC] Removed unnecessary volatile metadata barriers (#2653) --- src/dynarec/dynarec_native_pass.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) (limited to 'src') 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); -- cgit 1.4.1