diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-11 17:55:16 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-11 17:55:16 +0100 |
| commit | 8e732046ba4ea85f964691ac82421fdc7d1a1084 (patch) | |
| tree | feb97bc419ae21704e1ca4fe7bf725d54da92ea0 /src | |
| parent | f08b88cce5794d35fe3dbe9e8d45dfab6c575f72 (diff) | |
| download | box64-8e732046ba4ea85f964691ac82421fdc7d1a1084.tar.gz box64-8e732046ba4ea85f964691ac82421fdc7d1a1084.zip | |
Added some SSE2 and x87 opcodes
Diffstat (limited to 'src')
| -rwxr-xr-x | src/emu/x64run.c | 2 | ||||
| -rw-r--r-- | src/emu/x64rund9.c | 4 | ||||
| -rw-r--r-- | src/emu/x64runf20f.c | 7 |
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); |