about summary refs log tree commit diff stats
path: root/src/dynarec/dynarec_arm64_00.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dynarec/dynarec_arm64_00.c')
-rwxr-xr-xsrc/dynarec/dynarec_arm64_00.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/dynarec/dynarec_arm64_00.c b/src/dynarec/dynarec_arm64_00.c
index bb40a9a7..4cd18a25 100755
--- a/src/dynarec/dynarec_arm64_00.c
+++ b/src/dynarec/dynarec_arm64_00.c
@@ -2319,9 +2319,15 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             MOVx_REG(xRAX, x2);
                         } else {
                             GETEDH(x1, 0);  // get edd changed addr, so cannot be called 2 times for same op...
-                            CBZxw_MARK(xRDX);
+                            //Need to see if RDX==0 and RAX not signed
+                            // or RDX==-1 and RAX signed
+                            CBNZx_MARK2(xRDX);
+                            TBZ_MARK(xRAX, 31);
+                            MARK2;
                             MVNx_REG(x2, xRDX);
-                            CBZxw_MARK(x2);
+                            CBNZx_MARK3(x2);
+                            TBNZ_MARK(xRAX, 31);
+                            MARK3;
                             if(ed!=x1) {MOVx_REG(x1, ed);}
                             CALL((void*)idiv64, -1);
                             B_NEXT_nocond;