diff options
| author | 2020-11-13 23:20:32 -0800 | |
|---|---|---|
| committer | 2020-11-29 01:31:52 -0800 | |
| commit | 63fd1bb50302867b233325f253b1e2abbc379875 (patch) | |
| tree | 65204a55cc87b2b4ef7260744ff96fabc813c9f6 /src/core/hle/kernel/kernel.cpp | |
| parent | hle: kernel: time_manager: Avoid a crash on process exit. (diff) | |
| download | yuzu-63fd1bb50302867b233325f253b1e2abbc379875.tar.gz yuzu-63fd1bb50302867b233325f253b1e2abbc379875.tar.xz yuzu-63fd1bb50302867b233325f253b1e2abbc379875.zip | |
core: arm: Implement InvalidateCacheRange for CPU cache invalidation.
Diffstat (limited to 'src/core/hle/kernel/kernel.cpp')
| -rw-r--r-- | src/core/hle/kernel/kernel.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp index c426b6378..929db696d 100644 --- a/src/core/hle/kernel/kernel.cpp +++ b/src/core/hle/kernel/kernel.cpp | |||
| @@ -497,12 +497,17 @@ const Core::ExclusiveMonitor& KernelCore::GetExclusiveMonitor() const { | |||
| 497 | } | 497 | } |
| 498 | 498 | ||
| 499 | void KernelCore::InvalidateAllInstructionCaches() { | 499 | void KernelCore::InvalidateAllInstructionCaches() { |
| 500 | if (!IsMulticore()) { | 500 | for (auto& physical_core : impl->cores) { |
| 501 | for (auto& physical_core : impl->cores) { | 501 | physical_core.ArmInterface().ClearInstructionCache(); |
| 502 | physical_core.ArmInterface().ClearInstructionCache(); | 502 | } |
| 503 | } | ||
| 504 | |||
| 505 | void KernelCore::InvalidateCpuInstructionCacheRange(VAddr addr, std::size_t size) { | ||
| 506 | for (auto& physical_core : impl->cores) { | ||
| 507 | if (!physical_core.IsInitialized()) { | ||
| 508 | continue; | ||
| 503 | } | 509 | } |
| 504 | } else { | 510 | physical_core.ArmInterface().InvalidateCacheRange(addr, size); |
| 505 | UNIMPLEMENTED(); | ||
| 506 | } | 511 | } |
| 507 | } | 512 | } |
| 508 | 513 | ||