diff options
| author | Yang Liu <liuyang22@iscas.ac.cn> | 2024-12-16 03:05:37 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-15 20:05:37 +0100 |
| commit | 4c6401c66b95f493f551ea373de164dfc48d020c (patch) | |
| tree | 6b939296d78690398ee2aed4118256c35314f25f /src | |
| parent | 42441c99cc4ef1e262a0f50e39c4056cc173c1e9 (diff) | |
| download | box64-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.c | 5 | ||||
| -rw-r--r-- | src/dynarec/rv64/dynarec_rv64_f0.c | 4 |
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; |