From f85b9ac664fedafe2fba8d40a01456bf197b5228 Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Tue, 18 Feb 2025 00:06:47 +0800 Subject: [INTERP] Added more nops ([DYNAREC] too) (#2377) --- src/dynarec/arm64/dynarec_arm64_64.c | 8 +++++++- src/dynarec/la64/dynarec_la64_64.c | 14 ++++++++++++++ src/dynarec/rv64/dynarec_rv64_64.c | 7 +++++++ src/emu/x64run64.c | 7 +++++++ 4 files changed, 35 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/dynarec/arm64/dynarec_arm64_64.c b/src/dynarec/arm64/dynarec_arm64_64.c index 3aa3571b..ee1d22f1 100644 --- a/src/dynarec/arm64/dynarec_arm64_64.c +++ b/src/dynarec/arm64/dynarec_arm64_64.c @@ -194,7 +194,13 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin DEFAULT; } break; - + case 0x18: + case 0x19: + case 0x1F: + INST_NAME("NOP (multibyte)"); + nextop = F8; + FAKEED; + break; case 0x28: switch(rep) { case 0: diff --git a/src/dynarec/la64/dynarec_la64_64.c b/src/dynarec/la64/dynarec_la64_64.c index 2af080ef..6e076719 100644 --- a/src/dynarec/la64/dynarec_la64_64.c +++ b/src/dynarec/la64/dynarec_la64_64.c @@ -79,6 +79,20 @@ uintptr_t dynarec64_64(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni GETEDO(x4, 0); emit_or32(dyn, ninst, rex, gd, ed, x3, x4); break; + case 0x0F: + opcode = F8; + switch (opcode) { + case 0x18: + case 0x19: + case 0x1F: + INST_NAME("NOP (multibyte)"); + nextop = F8; + FAKEED; + break; + default: + DEFAULT; + } + break; case 0x2B: INST_NAME("SUB Gd, Seg:Ed"); SETFLAGS(X_ALL, SF_SET_PENDING, NAT_FLAGS_FUSION); diff --git a/src/dynarec/rv64/dynarec_rv64_64.c b/src/dynarec/rv64/dynarec_rv64_64.c index 6447c7f2..69503d77 100644 --- a/src/dynarec/rv64/dynarec_rv64_64.c +++ b/src/dynarec/rv64/dynarec_rv64_64.c @@ -131,6 +131,13 @@ uintptr_t dynarec64_64(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni } break; + case 0x18: + case 0x19: + case 0x1F: + INST_NAME("NOP (multibyte)"); + nextop = F8; + FAKEED; + break; default: DEFAULT; } diff --git a/src/emu/x64run64.c b/src/emu/x64run64.c index 0470d92a..33f1e806 100644 --- a/src/emu/x64run64.c +++ b/src/emu/x64run64.c @@ -178,6 +178,13 @@ uintptr_t Run64(x64emu_t *emu, rex_t rex, int seg, uintptr_t addr) return 0; } break; + + case 0x18: + case 0x19: + case 0x1F: /* NOP (multi-byte) */ + nextop = F8; + FAKEED(0); + break; case 0x28: switch(rep) { case 0: /* MOVAPS Gx, FS:Ex */ -- cgit 1.4.1