diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-30 20:55:23 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-30 20:55:23 +0200 |
| commit | c5f4820b4e33c20841497c674ddf959cdbb18b27 (patch) | |
| tree | 5d0c1b7e724413d5b985a037a5c67cffcb5f2c88 /src | |
| parent | a3d9da2fd4035607ac32e83d95f4eda8a3a51c8a (diff) | |
| download | box64-c5f4820b4e33c20841497c674ddf959cdbb18b27.tar.gz box64-c5f4820b4e33c20841497c674ddf959cdbb18b27.zip | |
Added A1/A3 opcodes ([DYNAREC] too)
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; |