Browse Source

Merge pull request #7407 from jam1garner/ic-ivau-instruction

Add InstructionCacheOperationRaised handler for 'ic ivau' instruction
nce_cpp
Mai M 4 years ago
committed by GitHub
parent
commit
b14d2183fb
  1. 20
      src/core/arm/dynarmic/arm_dynarmic_64.cpp

20
src/core/arm/dynarmic/arm_dynarmic_64.cpp

@ -86,6 +86,26 @@ public:
num_instructions, MemoryReadCode(pc)); num_instructions, MemoryReadCode(pc));
} }
void InstructionCacheOperationRaised(Dynarmic::A64::InstructionCacheOperation op,
VAddr value) override {
switch (op) {
case Dynarmic::A64::InstructionCacheOperation::InvalidateByVAToPoU: {
static constexpr u64 ICACHE_LINE_SIZE = 64;
const u64 cache_line_start = value & ~(ICACHE_LINE_SIZE - 1);
parent.InvalidateCacheRange(cache_line_start, ICACHE_LINE_SIZE);
break;
}
case Dynarmic::A64::InstructionCacheOperation::InvalidateAllToPoU:
parent.ClearInstructionCache();
break;
case Dynarmic::A64::InstructionCacheOperation::InvalidateAllToPoUInnerSharable:
default:
LOG_DEBUG(Core_ARM, "Unprocesseed instruction cache operation: {}", op);
break;
}
}
void ExceptionRaised(u64 pc, Dynarmic::A64::Exception exception) override { void ExceptionRaised(u64 pc, Dynarmic::A64::Exception exception) override {
switch (exception) { switch (exception) {
case Dynarmic::A64::Exception::WaitForInterrupt: case Dynarmic::A64::Exception::WaitForInterrupt:

Loading…
Cancel
Save