about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-03-28 15:08:20 +0200
committerptitSeb <sebastien.chev@gmail.com>2021-03-28 15:08:20 +0200
commitfb7a0318a0e93b099cf781ea5bb285b97092d277 (patch)
treee87e0f83cd1495aa664362e76d93b28e69d0d4ca /src
parent479ade9cb7dde26f0766957410a6343007731338 (diff)
downloadbox64-fb7a0318a0e93b099cf781ea5bb285b97092d277.tar.gz
box64-fb7a0318a0e93b099cf781ea5bb285b97092d277.zip
[DYNAREC] Enhanced the special case of CMP follow by CALL handling (need to find a better solution)
Diffstat (limited to 'src')
-rwxr-xr-xsrc/dynarec/dynarec_arm64_00.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/dynarec/dynarec_arm64_00.c b/src/dynarec/dynarec_arm64_00.c
index 60f3a5a3..018a3304 100755
--- a/src/dynarec/dynarec_arm64_00.c
+++ b/src/dynarec/dynarec_arm64_00.c
@@ -2110,7 +2110,10 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     break;
                 case 2: // CALL Ed
                     INST_NAME("CALL Ed");
-                    PASS2IF(ninst && dyn->insts && dyn->insts[ninst-1].x64.set_flags, 1) {
+                    PASS2IF(dyn->insts && 
+                           ((ninst && dyn->insts[ninst-1].x64.set_flags)
+                        || ((ninst>1) && dyn->insts[ninst-2].x64.set_flags)), 1)
+                    {
                         READFLAGS(X_PEND);          // that's suspicious
                     } else {
                         SETFLAGS(X_ALL, SF_SET);    //Hack to put flag in "don't care" state