about summary refs log tree commit diff stats
path: root/src/dynarec
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-03-17 15:39:02 +0100
committerptitSeb <sebastien.chev@gmail.com>2025-03-17 15:39:02 +0100
commit7fa3a1e627fe815b05751c223f4923e0d34addd1 (patch)
tree98944ca87b55d611da520a9cce3b317b0b3c2797 /src/dynarec
parentd28c8aa41a6bef344b107935cb4cb5cb22e5202e (diff)
downloadbox64-7fa3a1e627fe815b05751c223f4923e0d34addd1.tar.gz
box64-7fa3a1e627fe815b05751c223f4923e0d34addd1.zip
[ARM64_DYNAREC] Simplified 8F opcode, so special cases will be handled in signal directly if needed
Diffstat (limited to 'src/dynarec')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_00.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_00.c b/src/dynarec/arm64/dynarec_arm64_00.c
index dcf2037a..3488d92a 100644
--- a/src/dynarec/arm64/dynarec_arm64_00.c
+++ b/src/dynarec/arm64/dynarec_arm64_00.c
@@ -1559,15 +1559,9 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 POP1z(TO_NAT((nextop & 7) + (rex.b << 3)));
             } else {
                 POP1z(x2); // so this can handle POP [ESP] and maybe some variant too
-                addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, &unscaled, 0xfff<<3, 7, rex, NULL, 0, 0);
-                if(ed==xRSP) {
-                    STz(x2, ed, fixedaddress);
-                } else {
-                    // complicated to just allow a segfault that can be recovered correctly
-                    SUBz_U12(xRSP, xRSP, rex.is32bits?4:8);
-                    STz(x2, ed, fixedaddress);
-                    ADDz_U12(xRSP, xRSP, rex.is32bits?4:8);
-                }
+                addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, &unscaled, 0xfff<<(2+rex.is32bits), (1<<(2+rex.is32bits))-1, rex, NULL, 0, 0);
+                STz(x2, ed, fixedaddress);
+                SMWRITE();
             }
             break;
         case 0x90: