about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_67.c10
-rw-r--r--src/emu/x64run67.c7
2 files changed, 17 insertions, 0 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_67.c b/src/dynarec/arm64/dynarec_arm64_67.c
index a4cc6f6e..6855bf58 100644
--- a/src/dynarec/arm64/dynarec_arm64_67.c
+++ b/src/dynarec/arm64/dynarec_arm64_67.c
@@ -38,6 +38,7 @@ uintptr_t dynarec64_67(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
     int32_t i32;

     int64_t j64, i64;

     int16_t i16;

+    uint64_t u64;

     int cacheupd = 0;

     int lock;

     int v0, v1, s0;

@@ -1196,6 +1197,15 @@ uintptr_t dynarec64_67(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             }

             break;

 

+        case 0xA1:

+            INST_NAME("MOV EAX,Od");

+            u64 = F32;

+            MOV64z(x1, u64);

+            lock=isLockAddress(u64);

+            SMREADLOCK(lock);

+            LDRxw_U12(xRAX, x1, 0);

+            break;

+

         case 0xA9:

             INST_NAME("TEST EAX, Id");

             SETFLAGS(X_ALL, SF_SET_PENDING);

diff --git a/src/emu/x64run67.c b/src/emu/x64run67.c
index ae5366fb..5d0eea0f 100644
--- a/src/emu/x64run67.c
+++ b/src/emu/x64run67.c
@@ -318,6 +318,13 @@ uintptr_t Run67(x64emu_t *emu, rex_t rex, int rep, uintptr_t addr)
             GD->q[0] = ((uintptr_t)ED)&0xffffffff;

         break;

 

+    case 0xA1:                      /* MOV EAX,Od */

+        if(rex.w)

+            R_RAX = *(uint64_t*)(uintptr_t)F32;

+        else

+            R_RAX = *(uint32_t*)(uintptr_t)F32;

+        break;

+

     case 0xC1:                      /* GRP2 Ed,Ib */

         nextop = F8;

         GETED32(1);