about summary refs log tree commit diff stats
path: root/src/libtools
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-01-02 19:00:49 +0100
committerptitSeb <sebastien.chev@gmail.com>2025-01-02 19:00:49 +0100
commit967c73efd1cd7b794f598c781a21cbe008466acf (patch)
tree7c9cd0bdf06ff28bcd711d63675be9af462be29b /src/libtools
parent6a35cd2a56b289a69055906c6237fa6f80e3127a (diff)
downloadbox64-967c73efd1cd7b794f598c781a21cbe008466acf.tar.gz
box64-967c73efd1cd7b794f598c781a21cbe008466acf.zip
[ARM64_DYNAREC] Fixed native flags with signal, and added sse handling
Diffstat (limited to 'src/libtools')
-rw-r--r--src/libtools/signals.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/libtools/signals.c b/src/libtools/signals.c
index c1ff9f9a..a61ef4b6 100644
--- a/src/libtools/signals.c
+++ b/src/libtools/signals.c
@@ -1417,6 +1417,8 @@ void my_sigactionhandler_oldcode(x64emu_t* emu, int32_t sig, int simple, siginfo
     GO(R15);
     GO(RIP);
     #undef GO
+    sse_regs_t old_xmm[16];
+    memcpy(old_xmm, emu->xmm, sizeof(old_xmm));
     #ifdef DYNAREC
     dynablock_t* db = cur_db;
     if(db) {
@@ -1451,6 +1453,7 @@ void my_sigactionhandler_oldcode(x64emu_t* emu, int32_t sig, int simple, siginfo
     GO(R15);
     GO(RIP);
     #undef GO
+    memcpy(emu->xmm, old_xmm, sizeof(old_xmm));
 }
 
 extern void* current_helper;