about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-03-11 17:55:16 +0100
committerptitSeb <sebastien.chev@gmail.com>2021-03-11 17:55:16 +0100
commit8e732046ba4ea85f964691ac82421fdc7d1a1084 (patch)
treefeb97bc419ae21704e1ca4fe7bf725d54da92ea0 /src
parentf08b88cce5794d35fe3dbe9e8d45dfab6c575f72 (diff)
downloadbox64-8e732046ba4ea85f964691ac82421fdc7d1a1084.tar.gz
box64-8e732046ba4ea85f964691ac82421fdc7d1a1084.zip
Added some SSE2 and x87 opcodes
Diffstat (limited to 'src')
-rwxr-xr-xsrc/emu/x64run.c2
-rw-r--r--src/emu/x64rund9.c4
-rw-r--r--src/emu/x64runf20f.c7
3 files changed, 10 insertions, 3 deletions
diff --git a/src/emu/x64run.c b/src/emu/x64run.c
index 741846d5..ccf03289 100755
--- a/src/emu/x64run.c
+++ b/src/emu/x64run.c
@@ -473,6 +473,8 @@ x64emurun:
                 R_RDX=(R_EAX & 0x80000000)?0xFFFFFFFFFFFFFFFFL:0x0000000000000000L;
             break;
 
+        case 0x9B:                      /* FWAIT */
+            break;
         case 0x9C:                      /* PUSHF */
             CHECK_FLAGS(emu);
             Push(emu, emu->eflags.x64);
diff --git a/src/emu/x64rund9.c b/src/emu/x64rund9.c
index 113e5d42..253204e8 100644
--- a/src/emu/x64rund9.c
+++ b/src/emu/x64rund9.c
@@ -267,16 +267,14 @@ int RunD9(x64emu_t *emu, rex_t rex)
                 // do something with cw?

                 emu->round = (fpu_round_t)((emu->cw >> 10) & 3);

                 break;

-            #if 0

             case 6:     /* FNSTENV m */

                 // warning, incomplete

-                GETED;

+                GETED(0);

                 fpu_savenv(emu, (char*)ED, 0);

                 // intruction pointer: 48bits

                 // data (operand) pointer: 48bits

                 // last opcode: 11bits save: 16bits restaured (1st and 2nd opcode only)

                 break;

-            #endif

             case 7: /* FNSTCW Ew */

                 GETEW(0);

                 EW->word[0] = emu->cw;

diff --git a/src/emu/x64runf20f.c b/src/emu/x64runf20f.c
index cd50f6f6..30f84f9c 100644
--- a/src/emu/x64runf20f.c
+++ b/src/emu/x64runf20f.c
@@ -77,6 +77,13 @@ int RunF20F(x64emu_t *emu, rex_t rex)
             GD->sdword[0] = EX->d[0];

         break;

 

+    case 0x51:  /* SQRTSD Gx, Ex */

+        nextop = F8;

+        GETEX(0);

+        GETGX;

+        GX->d[0] = sqrt(EX->d[0]);

+        break;

+

     case 0x58:  /* ADDSD Gx, Ex */

         nextop = F8;

         GETEX(0);