diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-18 18:27:53 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-18 18:27:53 +0100 |
| commit | 13da8f0d758c9f784a6e19887e7d1b7cf7537633 (patch) | |
| tree | 8af1c294b026669f9f3b7ef486e670ad0c5cb8d7 /src | |
| parent | adea4ceef2b17111a60298f8ea57225f923e80fb (diff) | |
| download | box64-13da8f0d758c9f784a6e19887e7d1b7cf7537633.tar.gz box64-13da8f0d758c9f784a6e19887e7d1b7cf7537633.zip | |
[DYNAREC] Fixed GETED delta computation (fixing IntoTheBreach and ThimbleweedPark)
Diffstat (limited to 'src')
| -rwxr-xr-x | src/dynarec/dynarec_arm64_helper.h | 32 |
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 |