about summary refs log tree commit diff stats
path: root/src/dynarec/dynarec_native_functions.c
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-05-23 16:31:53 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-05-23 16:32:04 +0200
commit604ab2252658e85791bfd3d5a04f546b554f23c3 (patch)
tree281ee1bd7b09f6e06ac4f70f566aac55c70179a0 /src/dynarec/dynarec_native_functions.c
parent85d09df9382d2ce581f89e9fee2e7d862e21e891 (diff)
downloadbox64-604ab2252658e85791bfd3d5a04f546b554f23c3.tar.gz
box64-604ab2252658e85791bfd3d5a04f546b554f23c3.zip
[ARM64_DYNAREC] Added 66 D9 /6 and 66 DD /4 /6 opcodes
Diffstat (limited to 'src/dynarec/dynarec_native_functions.c')
-rw-r--r--src/dynarec/dynarec_native_functions.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/src/dynarec/dynarec_native_functions.c b/src/dynarec/dynarec_native_functions.c
index 07dad6bf..1cb2834d 100644
--- a/src/dynarec/dynarec_native_functions.c
+++ b/src/dynarec/dynarec_native_functions.c
@@ -204,7 +204,18 @@ void native_fsave(x64emu_t* emu, uint8_t* ed)
     uint8_t* p = ed;
     p += 28;
     for (int i=0; i<8; ++i) {
-        LD2D(p, &ST(i).d);
+        LD2D(p, &emu->x87[7-i].d);
+        p+=10;
+    }
+}
+void native_fsave16(x64emu_t* emu, uint8_t* ed)
+{
+    fpu_savenv(emu, (char*)ed, 1);
+
+    uint8_t* p = ed;
+    p += 14;
+    for (int i=0; i<8; ++i) {
+        LD2D(p, &emu->x87[7-i].d);
         p+=10;
     }
 }
@@ -215,7 +226,19 @@ void native_frstor(x64emu_t* emu, uint8_t* ed)
     uint8_t* p = ed;
     p += 28;
     for (int i=0; i<8; ++i) {
-        D2LD(&ST(i).d, p);
+        D2LD(&emu->x87[7-i].d, p);
+        p+=10;
+    }
+
+}
+void native_frstor16(x64emu_t* emu, uint8_t* ed)
+{
+    fpu_loadenv(emu, (char*)ed, 1);
+
+    uint8_t* p = ed;
+    p += 14;
+    for (int i=0; i<8; ++i) {
+        D2LD(&emu->x87[7-i].d, p);
         p+=10;
     }