about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/emu/x64run6664.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/emu/x64run6664.c b/src/emu/x64run6664.c
index 25fee5b1..4a4b8a37 100644
--- a/src/emu/x64run6664.c
+++ b/src/emu/x64run6664.c
@@ -43,13 +43,12 @@ uintptr_t Run6664(x64emu_t *emu, rex_t rex, uintptr_t addr)
         case 0x0F:

             opcode = F8;

             switch(opcode) {

-                case 0xD6:                      /* MOVQ Ex,Gx */

+

+                case 0x11:                      /* MOVUPD Ex, Gx */

                     nextop = F8;

                     GETEX_OFFS(0, tlsdata);

                     GETGX;

-                    EX->q[0] = GX->q[0];

-                    if(MODREG)

-                        EX->q[1] = 0;

+                    memcpy(EX, GX, 16); // unaligned...

                     break;

 

                 case 0x2E:                      /* UCOMISD Gx, Ex */

@@ -71,6 +70,15 @@ uintptr_t Run6664(x64emu_t *emu, rex_t rex, uintptr_t addr)
                     CLEAR_FLAG(F_OF); CLEAR_FLAG(F_AF); CLEAR_FLAG(F_SF);

                     break;

 

+                case 0xD6:                      /* MOVQ Ex,Gx */

+                    nextop = F8;

+                    GETEX_OFFS(0, tlsdata);

+                    GETGX;

+                    EX->q[0] = GX->q[0];

+                    if(MODREG)

+                        EX->q[1] = 0;

+                    break;

+

                 default:

                     return 0;

             }