diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-07-31 18:19:25 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-08-06 16:10:17 +0200 |
| commit | 642260bdb63eb48667f35d21b376b04f0d5e1976 (patch) | |
| tree | 2ed6f09e5f9758587e985c5a62e3da252b8379a0 /src/dynarec | |
| parent | bafa85e772fff6b0a279c96678a7f92d1ce842f0 (diff) | |
| download | box64-642260bdb63eb48667f35d21b376b04f0d5e1976.tar.gz box64-642260bdb63eb48667f35d21b376b04f0d5e1976.zip | |
Chenged Interpretor so RIP is updated on opcode success (better precision for Signal)
Diffstat (limited to 'src/dynarec')
| -rwxr-xr-x | src/dynarec/arm64/dynarec_arm64_00.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_00.c b/src/dynarec/arm64/dynarec_arm64_00.c index 423fa821..6bee4991 100755 --- a/src/dynarec/arm64/dynarec_arm64_00.c +++ b/src/dynarec/arm64/dynarec_arm64_00.c @@ -1652,6 +1652,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } else { GETIP(ip+1); // read the 0xCC STORE_XEMU_CALL(xRIP); + ADDx_U12(x1, xEmu, (uint32_t)offsetof(x64emu_t, ip)); // setup addr as &emu->ip CALL_S(x64Int3, -1); LOAD_XEMU_CALL(xRIP); addr+=8+8; @@ -2099,6 +2100,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } else { GETIP_(dyn->insts[ninst].natcall); // read the 0xCC already STORE_XEMU_CALL(xRIP); + ADDx_U12(x1, xEmu, (uint32_t)offsetof(x64emu_t, ip)); // setup addr as &emu->ip CALL_S(x64Int3, -1); LOAD_XEMU_CALL(xRIP); TABLE64(x3, dyn->insts[ninst].natcall); |