From 74b99b52ee801bd91676897043d8a52040bc4fec Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sun, 17 Apr 2022 10:36:52 +0200 Subject: [DYNAREC] Added 0F AE /7 opcode --- src/dynarec/arm64/dynarec_arm64_0f.c | 9 +++++++++ src/dynarec/arm64/dynarec_arm64_functions.c | 5 +++++ src/dynarec/arm64/dynarec_arm64_functions.h | 1 + 3 files changed, 15 insertions(+) (limited to 'src') diff --git a/src/dynarec/arm64/dynarec_arm64_0f.c b/src/dynarec/arm64/dynarec_arm64_0f.c index 733eb5dd..23ef668f 100755 --- a/src/dynarec/arm64/dynarec_arm64_0f.c +++ b/src/dynarec/arm64/dynarec_arm64_0f.c @@ -1225,6 +1225,15 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin STRw_U12(x4, ed, fixedaddress); } break; + case 7: + INST_NAME("CLFLUSH Ed"); + MESSAGE(LOG_DUMP, "Need Optimization?\n"); + GETED(0); + if(ed!=x1) { + MOVx_REG(x1, ed); + } + CALL_(arm_clflush, -1, 0); + break; default: DEFAULT; } diff --git a/src/dynarec/arm64/dynarec_arm64_functions.c b/src/dynarec/arm64/dynarec_arm64_functions.c index 900e2b7a..2ac2cc34 100755 --- a/src/dynarec/arm64/dynarec_arm64_functions.c +++ b/src/dynarec/arm64/dynarec_arm64_functions.c @@ -309,6 +309,11 @@ void arm_aese(x64emu_t* emu, int xmm) arm_aesmc(emu, xmm); } +void arm_clflush(x64emu_t* emu, void* p) +{ + cleanDBFromAddressRange((uintptr_t)p, 8, 0); +} + #define XMM0 0 #define XMM8 16 diff --git a/src/dynarec/arm64/dynarec_arm64_functions.h b/src/dynarec/arm64/dynarec_arm64_functions.h index bf6c270f..55d5c697 100755 --- a/src/dynarec/arm64/dynarec_arm64_functions.h +++ b/src/dynarec/arm64/dynarec_arm64_functions.h @@ -35,6 +35,7 @@ void arm_aesdlast(x64emu_t* emu, int xmm); void arm_aeselast(x64emu_t* emu, int xmm); void arm_aesimc(x64emu_t* emu, int xmm); +void arm_clflush(x64emu_t* emu, void* p); void arm_ud(x64emu_t* emu); -- cgit 1.4.1