about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-03-18 18:27:53 +0100
committerptitSeb <sebastien.chev@gmail.com>2021-03-18 18:27:53 +0100
commit13da8f0d758c9f784a6e19887e7d1b7cf7537633 (patch)
tree8af1c294b026669f9f3b7ef486e670ad0c5cb8d7 /src
parentadea4ceef2b17111a60298f8ea57225f923e80fb (diff)
downloadbox64-13da8f0d758c9f784a6e19887e7d1b7cf7537633.tar.gz
box64-13da8f0d758c9f784a6e19887e7d1b7cf7537633.zip
[DYNAREC] Fixed GETED delta computation (fixing IntoTheBreach and ThimbleweedPark)
Diffstat (limited to 'src')
-rwxr-xr-xsrc/dynarec/dynarec_arm64_helper.h32
1 files changed, 16 insertions, 16 deletions
diff --git a/src/dynarec/dynarec_arm64_helper.h b/src/dynarec/dynarec_arm64_helper.h
index e89bde40..408b7e40 100755
--- a/src/dynarec/dynarec_arm64_helper.h
+++ b/src/dynarec/dynarec_arm64_helper.h
@@ -432,23 +432,23 @@
 #define GETIP(A)
 #define GETIP_(A)
 #else
-#define GETIP(A)                                    \
-    if(dyn->last_ip && (A-dyn->last_ip)<0x1000) {   \
-        uint64_t delta = A-dyn->last_ip;            \
-        dyn->last_ip += delta;                      \
-        if(delta) {                                 \
-            ADDx_U12(xRIP, xRIP, delta);            \
-        }                                           \
-    } else {                                        \
-        dyn->last_ip = A;                           \
-        TABLE64(xRIP, dyn->last_ip);                \
+#define GETIP(A)                                        \
+    if(dyn->last_ip && ((A)-dyn->last_ip)<0x1000) {     \
+        uint64_t _delta_ip = (A)-dyn->last_ip;          \
+        dyn->last_ip += _delta_ip;                      \
+        if(_delta_ip) {                                 \
+            ADDx_U12(xRIP, xRIP, _delta_ip);            \
+        }                                               \
+    } else {                                            \
+        dyn->last_ip = (A);                             \
+        TABLE64(xRIP, dyn->last_ip);                    \
     }
-#define GETIP_(A)                                   \
-    if(dyn->last_ip && (A-dyn->last_ip)<0x1000) {   \
-        uint64_t delta = A-dyn->last_ip;            \
-        if(delta) {ADDx_U12(xRIP, xRIP, delta);}    \
-    } else {                                        \
-        TABLE64(xRIP, A);                           \
+#define GETIP_(A)                                       \
+    if(dyn->last_ip && ((A)-dyn->last_ip)<0x1000) {     \
+        uint64_t _delta_ip = (A)-dyn->last_ip;          \
+        if(_delta_ip) {ADDx_U12(xRIP, xRIP, _delta_ip);}\
+    } else {                                            \
+        TABLE64(xRIP, (A));                             \
     }
 #endif