diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2025-04-21 08:58:08 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2025-04-21 08:58:08 +0200 |
| commit | d0da57547e711b8051ef27bca0e85fcd367d6010 (patch) | |
| tree | e54158d21c3bfecfd24fbf4e3666938fc45bb7fb /src | |
| parent | e60fd72672c55b260b5551443f2f62bb3622e254 (diff) | |
| download | box64-d0da57547e711b8051ef27bca0e85fcd367d6010.tar.gz box64-d0da57547e711b8051ef27bca0e85fcd367d6010.zip | |
[ARM64_DYNAREC] Fixed some potential issues with BOX64_DYNAREC_DOUBLE=2
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_d8.c | 2 | ||||
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_dc.c | 2 | ||||
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_helper.c | 1 |
3 files changed, 1 insertions, 4 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_d8.c b/src/dynarec/arm64/dynarec_arm64_d8.c index 1fb1e614..76f2b4f3 100644 --- a/src/dynarec/arm64/dynarec_arm64_d8.c +++ b/src/dynarec/arm64/dynarec_arm64_d8.c @@ -260,7 +260,6 @@ uintptr_t dynarec64_D8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } else { FCVT_D_S(s0, s0); FCMPD(v1, s0); - X87_CHECK_PRECISION(v1); } FCOM(x1, x2, x3); break; @@ -275,7 +274,6 @@ uintptr_t dynarec64_D8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } else { FCVT_D_S(s0, s0); FCMPD(v1, s0); - X87_CHECK_PRECISION(v1); } FCOM(x1, x2, x3); X87_POP_OR_FAIL(dyn, ninst, x3); diff --git a/src/dynarec/arm64/dynarec_arm64_dc.c b/src/dynarec/arm64/dynarec_arm64_dc.c index 3ffb8dbb..b4d1a48d 100644 --- a/src/dynarec/arm64/dynarec_arm64_dc.c +++ b/src/dynarec/arm64/dynarec_arm64_dc.c @@ -96,7 +96,6 @@ uintptr_t dynarec64_DC(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin FCMPS(v1, v2); } else { FCMPD(v1, v2); - X87_CHECK_PRECISION(v1); } FCOM(x1, x2, x3); break; @@ -115,7 +114,6 @@ uintptr_t dynarec64_DC(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin FCMPS(v1, v2); } else { FCMPD(v1, v2); - X87_CHECK_PRECISION(v1); } FCOM(x1, x2, x3); X87_POP_OR_FAIL(dyn, ninst, x3); diff --git a/src/dynarec/arm64/dynarec_arm64_helper.c b/src/dynarec/arm64/dynarec_arm64_helper.c index 69855502..8c11f8ee 100644 --- a/src/dynarec/arm64/dynarec_arm64_helper.c +++ b/src/dynarec/arm64/dynarec_arm64_helper.c @@ -892,6 +892,7 @@ void call_n(dynarec_arm_t* dyn, int ninst, void* fnc, int w) fpu_popcache(dyn, ninst, x3, 1); LDRx_U12(xFlags, xEmu, offsetof(x64emu_t, eflags)); + ARM64_CHECK_PRECISION(); // restore x87pc if needed //SET_NODF(); } |