diff options
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_64.c | 10 | ||||
| -rw-r--r-- | src/emu/x64run64.c | 17 |
2 files changed, 25 insertions, 2 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_64.c b/src/dynarec/arm64/dynarec_arm64_64.c index e67b879c..bfb5702f 100644 --- a/src/dynarec/arm64/dynarec_arm64_64.c +++ b/src/dynarec/arm64/dynarec_arm64_64.c @@ -380,7 +380,12 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } } break; - + case 0x64: + addr = dynarec64_64(dyn, addr, ip, ninst, rex, rep, _FS, ok, need_epilog); + break; + case 0x65: + addr = dynarec64_64(dyn, addr, ip, ninst, rex, rep, _GS, ok, need_epilog); + break; case 0x66: addr = dynarec64_6664(dyn, addr, ip, ninst, rex, seg, ok, need_epilog); break; @@ -669,6 +674,9 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } } break; + case 0x90: + INST_NAME("NOP"); + break; case 0xA1: INST_NAME("MOV EAX,FS:Od"); diff --git a/src/emu/x64run64.c b/src/emu/x64run64.c index a9941291..c39ff5e7 100644 --- a/src/emu/x64run64.c +++ b/src/emu/x64run64.c @@ -335,7 +335,20 @@ uintptr_t Run64(x64emu_t *emu, rex_t rex, int seg, uintptr_t addr) GD->sdword[0] = ED->sdword[0]; // meh? } break; - + case 0x64: /* FS: prefix */ + #ifdef TEST_INTERPRETER + return Test64(test, rex, _FS, addr); + #else + return Run64(emu, rex, _FS, addr); + #endif + break; + case 0x65: /* GS: prefix */ + #ifdef TEST_INTERPRETER + return Test64(test, rex, _GS, addr); + #else + return Run64(emu, rex, _GS, addr); + #endif + break; case 0x66: return Run6664(emu, rex, seg, addr); case 0x67: @@ -477,6 +490,8 @@ uintptr_t Run64(x64emu_t *emu, rex_t rex, int seg, uintptr_t addr) } } break; + case 0x90: /* NOP */ + break; case 0xA1: /* MOV EAX,FS:Od */ if(rex.is32bits) { |