about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorYang Liu <liuyang22@iscas.ac.cn>2024-12-16 03:05:37 +0800
committerGitHub <noreply@github.com>2024-12-15 20:05:37 +0100
commit4c6401c66b95f493f551ea373de164dfc48d020c (patch)
tree6b939296d78690398ee2aed4118256c35314f25f /src
parent42441c99cc4ef1e262a0f50e39c4056cc173c1e9 (diff)
downloadbox64-4c6401c66b95f493f551ea373de164dfc48d020c.tar.gz
box64-4c6401c66b95f493f551ea373de164dfc48d020c.zip
[RV64_DYNAREC] Fixed more regressions (#2157)
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/rv64/dynarec_rv64_00_2.c5
-rw-r--r--src/dynarec/rv64/dynarec_rv64_f0.c4
2 files changed, 4 insertions, 5 deletions
diff --git a/src/dynarec/rv64/dynarec_rv64_00_2.c b/src/dynarec/rv64/dynarec_rv64_00_2.c
index 72588467..d979df92 100644
--- a/src/dynarec/rv64/dynarec_rv64_00_2.c
+++ b/src/dynarec/rv64/dynarec_rv64_00_2.c
@@ -345,10 +345,9 @@ uintptr_t dynarec64_00_2(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                 B_NEXT_nocond;
                 MARK;
                 // Unaligned
-                ANDI(x5, EDEADLK, -(1 << (rex.w + 2)));
-                LDxw(x1, ed, 0);
+                ANDI(x5, ed, -(1 << (rex.w + 2)));
                 MARKLOCK;
-                LDxw(x1, wback, 0);
+                LDxw(x1, ed, 0);
                 LRxw(x3, x5, 1, 1);
                 SCxw(x4, x3, x5, 1, 1);
                 BNEZ_MARKLOCK(x4);
diff --git a/src/dynarec/rv64/dynarec_rv64_f0.c b/src/dynarec/rv64/dynarec_rv64_f0.c
index 93b7cca3..369a3e6c 100644
--- a/src/dynarec/rv64/dynarec_rv64_f0.c
+++ b/src/dynarec/rv64/dynarec_rv64_f0.c
@@ -494,7 +494,7 @@ uintptr_t dynarec64_F0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                         ANDI(x3, wback, ~3); // aligned addr
                         ADDI(x1, xZR, u8);
                         SLL(x1, x1, x2); // Ib << offset
-                        AMOORxw(x4, x1, x3, 1, 1);
+                        AMOOR_W(x4, x1, x3, 1, 1);
                         IFXORNAT (X_ALL | X_PEND) {
                             SRL(x1, x4, x2);
                             ANDI(x1, x1, 0xFF);
@@ -631,7 +631,7 @@ uintptr_t dynarec64_F0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                         ANDI(x1, wback, (1 << (rex.w + 2)) - 1);
                         BNEZ_MARK3(x1);
                         // Aligned
-                        SUB(x4, xZR, x7);
+                        SUBxw(x4, xZR, x7);
                         AMOADDxw(x1, x4, wback, 1, 1);
                         B_MARK_nocond;
                         MARK3;