From 9896b02bd6bbaa09d30de32723645409353bbdfd Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Wed, 15 Nov 2023 09:43:09 +0100 Subject: Added 64/65 [64/65] 90 opcode ([ARM64_DYNAREC] Too) --- src/dynarec/arm64/dynarec_arm64_64.c | 10 +++++++++- 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) { -- cgit 1.4.1