about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-01-28 10:34:05 +0100
committerptitSeb <sebastien.chev@gmail.com>2023-01-28 10:34:05 +0100
commit389992c330c7058735839b90c8ff99e1623a3f58 (patch)
tree4ac2aca1294623fc568ea3221ac4ecf2a0bd333f /src
parent0753c52bed585396e17010676e9cef0508fafbb8 (diff)
downloadbox64-389992c330c7058735839b90c8ff99e1623a3f58.tar.gz
box64-389992c330c7058735839b90c8ff99e1623a3f58.zip
[DYNAREC] Fixed a regression with C1 /0 and C1 /1 opcodes
Diffstat (limited to 'src')
-rwxr-xr-xsrc/dynarec/arm64/dynarec_arm64_00.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_00.c b/src/dynarec/arm64/dynarec_arm64_00.c
index 4c4cf43e..b1641b2f 100755
--- a/src/dynarec/arm64/dynarec_arm64_00.c
+++ b/src/dynarec/arm64/dynarec_arm64_00.c
@@ -1518,6 +1518,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     GETED(1);
                     u8 = (F8)&(rex.w?0x3f:0x1f);
                     emit_rol32c(dyn, ninst, rex, ed, u8, x3, x4);
+                    if(u8) { WBACK; }
                     break;
                 case 1:
                     INST_NAME("ROR Ed, Ib");
@@ -1525,6 +1526,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     GETED(1);
                     u8 = (F8)&(rex.w?0x3f:0x1f);
                     emit_ror32c(dyn, ninst, rex, ed, u8, x3, x4);
+                    if(u8) { WBACK; }
                     break;
                 case 2:
                     INST_NAME("RCL Ed, Ib");
@@ -1563,9 +1565,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     GETED(1);
                     u8 = (F8)&(rex.w?0x3f:0x1f);
                     emit_shr32c(dyn, ninst, rex, ed, u8, x3, x4);
-                    if(u8) {
-                        WBACK;
-                    }
+                    if(u8) { WBACK; }
                     break;
                 case 7:
                     INST_NAME("SAR Ed, Ib");
@@ -1573,9 +1573,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     GETED(1);
                     u8 = (F8)&(rex.w?0x3f:0x1f);
                     emit_sar32c(dyn, ninst, rex, ed, u8, x3, x4);
-                    if(u8) {
-                        WBACK;
-                    }
+                    if(u8) { WBACK; }
                     break;
             }
             break;