about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/dynarec/arm64/dynarec_arm64_67.c18
-rw-r--r--src/emu/x64run67.c12
2 files changed, 29 insertions, 1 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_67.c b/src/dynarec/arm64/dynarec_arm64_67.c
index 34138e82..0b513909 100755
--- a/src/dynarec/arm64/dynarec_arm64_67.c
+++ b/src/dynarec/arm64/dynarec_arm64_67.c
@@ -223,7 +223,23 @@ uintptr_t dynarec64_67(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     break;

             }

             break;

-            

+

+        case 0xC7:

+            INST_NAME("MOV Ed, Id");

+            nextop=F8;

+            if(MODREG) {   // reg <= i32

+                i64 = F32S;

+                ed = xRAX+(nextop&7)+(rex.b<<3);

+                MOV64xw(ed, i64);

+            } else {                    // mem <= i32

+                addr = geted32(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, 0xfff<<(2+rex.w), (1<<(2+rex.w))-1, rex, 0, 4);

+                i64 = F32S;

+                MOV64xw(x3, i64);

+                STRxw_U12(x3, ed, fixedaddress);

+            }

+            break;

+

+

         #define GO(NO, YES)                                             \

             BARRIER(BARRIER_MAYBE);                                     \

             JUMP(addr+i8, 1);                                           \

diff --git a/src/emu/x64run67.c b/src/emu/x64run67.c
index 6668999f..4dd1c5dc 100644
--- a/src/emu/x64run67.c
+++ b/src/emu/x64run67.c
@@ -212,6 +212,18 @@ int Run67(x64emu_t *emu, rex_t rex, int rep)
         }

         break;

 

+    case 0xC7:                      /* MOV Ed,Id */

+        nextop = F8;

+        GETED32(4);

+        if(rex.w)

+            ED->q[0] = F32S64;

+        else

+            if(MODREG)

+                ED->q[0] = F32;

+            else

+                ED->dword[0] = F32;

+        break;

+

     case 0xE0:                      /* LOOPNZ */

         CHECK_FLAGS(emu);

         tmp8s = F8S;