about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2022-06-11 15:47:35 +0200
committerptitSeb <sebastien.chev@gmail.com>2022-06-11 15:47:35 +0200
commite950872ec9e4ef0f6b89aa4708e78c0f0aa6ecc5 (patch)
tree35661b32f1c5b7ff532dd608ba82add71cab64a7 /src
parentab1fdbfead13f464b02dbc98ae8fbd0682ffce48 (diff)
downloadbox64-e950872ec9e4ef0f6b89aa4708e78c0f0aa6ecc5.tar.gz
box64-e950872ec9e4ef0f6b89aa4708e78c0f0aa6ecc5.zip
[DYNAREC] Fixed (or least avoid SIGILL) for DD /1 opcode
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_dd.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_dd.c b/src/dynarec/arm64/dynarec_arm64_dd.c
index fbd481a9..fa7874fc 100644
--- a/src/dynarec/arm64/dynarec_arm64_dd.c
+++ b/src/dynarec/arm64/dynarec_arm64_dd.c
@@ -165,7 +165,12 @@ uintptr_t dynarec64_DD(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     v1 = x87_do_push(dyn, ninst, x3, NEON_CACHE_ST_D);
                     addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, 0xfff<<3, 7, rex, 0, 0);
                     s0 = fpu_get_scratch(dyn);
+                    #if 0
+                    // those are ARM 8.5 opcode!
                     FRINT64ZD(s0, v1);
+                    #else
+                    FRINTRRD(s0, v1, 3);    // not ideal, might averflow and not set 0x8000000000000000 correctly
+                    #endif
                     FCVTZSxD(x2, s0);
                     STRx_U12(x2, ed, fixedaddress);
                     x87_do_pop(dyn, ninst, x3);