about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-07-29 11:44:44 +0200
committerptitSeb <sebastien.chev@gmail.com>2025-07-29 11:44:44 +0200
commit0fd5d67fe33830289880bb3df4b8bb4dca9ce34a (patch)
treeb28657d3aef6213e3a35259eb16939de0a4610a3
parentf628c37a61cc215fa4acc53157c3c7ae6df9bc53 (diff)
downloadbox64-0fd5d67fe33830289880bb3df4b8bb4dca9ce34a.tar.gz
box64-0fd5d67fe33830289880bb3df4b8bb4dca9ce34a.zip
[ARM+4_DYNAREC] Another fix for STMXCSR opcode when using SSE_FLUSHTO0
-rw-r--r--src/dynarec/arm64/dynarec_arm64_0f.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_0f.c b/src/dynarec/arm64/dynarec_arm64_0f.c
index 221b10a0..a8779464 100644
--- a/src/dynarec/arm64/dynarec_arm64_0f.c
+++ b/src/dynarec/arm64/dynarec_arm64_0f.c
@@ -1983,7 +1983,6 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         INST_NAME("STMXCSR Md");

                         addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, &unscaled, 0xfff<<2, 3, rex, NULL, 0, 0);

                         LDRw_U12(x4, xEmu, offsetof(x64emu_t, mxcsr));

-                        STW(x4, ed, fixedaddress);

                         if(BOX64ENV(sse_flushto0)) {

                             // sync with fpsr, with mask from mxcsr

                             MRS_fpsr(x1);

@@ -1995,6 +1994,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             //BFXILw(x3, x4, 7, 6); // this would the mask, but let's ignore that for now

                             BFIw(x4, x1, 0, 6); // inject back the flags

                         }

+                        STW(x4, ed, fixedaddress);

                         break;

                     case 4:

                         INST_NAME("XSAVE Ed");