diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-06-11 15:47:35 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-06-11 15:47:35 +0200 |
| commit | e950872ec9e4ef0f6b89aa4708e78c0f0aa6ecc5 (patch) | |
| tree | 35661b32f1c5b7ff532dd608ba82add71cab64a7 /src | |
| parent | ab1fdbfead13f464b02dbc98ae8fbd0682ffce48 (diff) | |
| download | box64-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.c | 5 |
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); |