about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorYang Liu <numbksco@gmail.com>2024-06-01 13:52:03 +0800
committerGitHub <noreply@github.com>2024-06-01 07:52:03 +0200
commitc65f8da90f1a3cb0177e7a4aeae834d447602080 (patch)
tree529772dad447b34bc81ce1a61c15fe7dbda8069d /src
parent2970ed5bfd1d418573613077880af1bd379d3d61 (diff)
downloadbox64-c65f8da90f1a3cb0177e7a4aeae834d447602080.tar.gz
box64-c65f8da90f1a3cb0177e7a4aeae834d447602080.zip
[RV64_DYNAREC] Fixed LOCK CMPXCHG unaligned version (#1544)
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/rv64/dynarec_rv64_f0.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/dynarec/rv64/dynarec_rv64_f0.c b/src/dynarec/rv64/dynarec_rv64_f0.c
index 0f9c97ea..7b0cb6d2 100644
--- a/src/dynarec/rv64/dynarec_rv64_f0.c
+++ b/src/dynarec/rv64/dynarec_rv64_f0.c
@@ -230,12 +230,12 @@ uintptr_t dynarec64_F0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                                 // Unaligned
                                 ANDI(x5, wback, -(1 << (rex.w + 2)));
                                 MARK2; // Use MARK2 as a "MARKLOCK" since we're running out of marks.
-                                LDxw(x6, wback, 0);
-                                LRxw(x1, x5, 1, 1);
-                                SUBxw(x3, x6, xRAX);
+                                LDxw(x1, wback, 0);
+                                LRxw(x6, x5, 1, 1);
+                                SUBxw(x3, x1, xRAX);
                                 BNEZ_MARK(x3);
                                 // EAX == Ed
-                                SCxw(x4, x1, x5, 1, 1);
+                                SCxw(x4, x6, x5, 1, 1);
                                 BNEZ_MARK2(x4);
                                 SDxw(gd, wback, 0);
                                 MARK;