about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-01-04 11:03:46 +0100
committerptitSeb <sebastien.chev@gmail.com>2024-01-04 11:03:46 +0100
commitab99ae6951ff84fdf33d40480f8a61b36dd46020 (patch)
treec35c209cbd3bf8d97260fc5bc01413ea23e78375
parenta609452cfda881aa53e591728d7b63adab20b777 (diff)
downloadbox64-ab99ae6951ff84fdf33d40480f8a61b36dd46020.tar.gz
box64-ab99ae6951ff84fdf33d40480f8a61b36dd46020.zip
[ARM64_DYNAREC] Fixed CALLRET optim when unsync occur, should help stability
-rw-r--r--src/dynarec/arm64/dynarec_arm64_helper.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_helper.c b/src/dynarec/arm64/dynarec_arm64_helper.c
index c9fd9b3f..af0c595e 100644
--- a/src/dynarec/arm64/dynarec_arm64_helper.c
+++ b/src/dynarec/arm64/dynarec_arm64_helper.c
@@ -624,7 +624,7 @@ void ret_to_epilog(dynarec_arm_t* dyn, int ninst, rex_t rex)
         CBNZx(x6, 2*4);
         BLR(x2);
         // not the correct return address, regular jump, but purge the stack first, it's unsync now...
-        SUBx_U12(xSP, xSavedSP, 0);
+        SUBx_U12(xSP, xSavedSP, 16);
     }
     uintptr_t tbl = getJumpTable64();
     NOTEST(x2);
@@ -667,7 +667,7 @@ void retn_to_epilog(dynarec_arm_t* dyn, int ninst, rex_t rex, int n)
         CBNZx(x6, 2*4);
         BLR(x2);
         // not the correct return address, regular jump
-        SUBx_U12(xSP, xSavedSP, 0);
+        SUBx_U12(xSP, xSavedSP, 16);
     }
     uintptr_t tbl = getJumpTable64();
     NOTEST(x2);