diff options
| author | Yang Liu <liuyang22@iscas.ac.cn> | 2025-05-20 23:17:34 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-20 17:17:34 +0200 |
| commit | 7af5f625d7c6a27107040d8000d01e6dd4025e97 (patch) | |
| tree | 7b5af8dbcf889a27cdf396823391671a84cb7d84 /src/dynarec/dynarec_native_pass.c | |
| parent | a1ac9cccc4d1a07f4c6e2650bf155902383ad424 (diff) | |
| download | box64-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.c | 16 |
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); |