From 7acdd87198ac42e95f97fe943dafab9c73a22fc3 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Tue, 9 Sep 2025 11:59:29 +0200 Subject: [DYNAREC] Fully trust volatile metadata when they are present (fixes Starfield freeze) --- src/dynarec/dynarec_native_pass.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/dynarec') diff --git a/src/dynarec/dynarec_native_pass.c b/src/dynarec/dynarec_native_pass.c index a90206fb..fc3d06a9 100644 --- a/src/dynarec/dynarec_native_pass.c +++ b/src/dynarec/dynarec_native_pass.c @@ -135,7 +135,7 @@ uintptr_t native_pass(dynarec_native_t* dyn, uintptr_t addr, int alternate, int } int is_opcode_volatile = box64_wine && VolatileRangesContains(ip) && VolatileOpcodesHas(ip); - if (is_opcode_volatile && !dyn->insts[ninst].lock_prefixed && dyn->insts[ninst].will_write) + if (is_opcode_volatile && !dyn->insts[ninst].lock_prefixed) DMB_ISHST(); #endif if((dyn->insts[ninst].x64.need_before&~X_PEND) && !ninst) { @@ -198,7 +198,7 @@ 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 && dyn->insts[ninst].will_read) + if (is_opcode_volatile && !dyn->insts[ninst].lock_prefixed) DMB_ISHLD(); #endif -- cgit 1.4.1