diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/dynarec/dynarec_arm64_00.c | 13 | ||||
| -rwxr-xr-x | src/emu/x64run.c | 13 |
2 files changed, 26 insertions, 0 deletions
diff --git a/src/dynarec/dynarec_arm64_00.c b/src/dynarec/dynarec_arm64_00.c index aca8ec5a..c271f1e2 100755 --- a/src/dynarec/dynarec_arm64_00.c +++ b/src/dynarec/dynarec_arm64_00.c @@ -1016,6 +1016,19 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin SET_DFNONE(x1); break; + case 0xA1: + INST_NAME("MOV EAX,Od"); + u64 = F64; + MOV64x(x1, u64); + LDRxw_U12(xRAX, x1, 0); + break; + + case 0xA3: + INST_NAME("MOV Od,EAX"); + u64 = F64; + MOV64x(x1, u64); + STRxw_U12(xRAX, x1, 0); + break; case 0xA4: if(rep) { INST_NAME("REP MOVSB"); diff --git a/src/emu/x64run.c b/src/emu/x64run.c index 237f7de1..70332399 100755 --- a/src/emu/x64run.c +++ b/src/emu/x64run.c @@ -539,6 +539,19 @@ x64emurun: RESET_FLAGS(emu); break; + case 0xA1: /* MOV EAX,Od */ + if(rex.w) + R_RAX = *(uint64_t*)F64; + else + R_EAX = *(uint32_t*)F64; + break; + + case 0xA3: /* MOV Od,EAX */ + if(rex.w) + *(uint64_t*)F64 = R_RAX; + else + *(uint32_t*)F64 = R_EAX; + break; case 0xA4: /* MOVSB */ tmp8s = ACCESS_FLAG(F_DF)?-1:+1; tmp64u = (rep)?R_RCX:1L; |