From 4e10cd654f4c9c0a106a9c5bfae0fe3d86d815e5 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sat, 19 Oct 2024 15:23:26 +0200 Subject: Improved 0F 0D opcode ([ARM64_DYNAREC] too) (FF7RI now have sound) --- src/dynarec/arm64/dynarec_arm64_0f.c | 15 +++++++++++++-- src/emu/x64run0f.c | 10 ++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/dynarec/arm64/dynarec_arm64_0f.c b/src/dynarec/arm64/dynarec_arm64_0f.c index b3b2ac34..79c0c916 100644 --- a/src/dynarec/arm64/dynarec_arm64_0f.c +++ b/src/dynarec/arm64/dynarec_arm64_0f.c @@ -190,13 +190,24 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin case 0x0D: nextop = F8; switch((nextop>>3)&7) { + case 0: + INST_NAME("PREFETCH"); + addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, NULL, 0xfff, 7, rex, NULL, 0, 0); + PLD_L1_STREAM_U12(ed, fixedaddress); + break; case 1: INST_NAME("PREFETCHW"); addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, NULL, 0xfff, 7, rex, NULL, 0, 0); PST_L1_STREAM_U12(ed, fixedaddress); break; - default: //??? - DEFAULT; + case 2: + INST_NAME("PREFETCHWT1"); + addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, NULL, 0xfff, 7, rex, NULL, 0, 0); + PST_L1_STREAM_U12(ed, fixedaddress); + break; + default: //NOP + FAKEED; + break; } break; case 0x0E: diff --git a/src/emu/x64run0f.c b/src/emu/x64run0f.c index d81a9d12..d1ae6ff8 100644 --- a/src/emu/x64run0f.c +++ b/src/emu/x64run0f.c @@ -178,11 +178,17 @@ uintptr_t Run0F(x64emu_t *emu, rex_t rex, uintptr_t addr, int *step) nextop = F8; GETED(0); switch((nextop>>3)&7) { + case 0: //PREFETCH? + __builtin_prefetch((void*)ED, 0, 0); + break; case 1: //PREFETCHW __builtin_prefetch((void*)ED, 1, 0); break; - default: //??? - return 0; + case 2: //PREFETCHWT1 + __builtin_prefetch((void*)ED, 1, 0); + break; + default: //NOP + break; } break; case 0x0E: /* FEMMS */ -- cgit 1.4.1