diff options
| -rw-r--r-- | src/core/hle/kernel/kernel.cpp | 12 | ||||
| -rw-r--r-- | src/core/hle/kernel/svc.cpp | 4 | 
2 files changed, 13 insertions, 3 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp index 739205eca..1f230fc4a 100644 --- a/src/core/hle/kernel/kernel.cpp +++ b/src/core/hle/kernel/kernel.cpp @@ -545,7 +545,17 @@ const Core::ExclusiveMonitor& KernelCore::GetExclusiveMonitor() const {  }  void KernelCore::InvalidateAllInstructionCaches() { -    //TODO: Reimplement, this +    if (!IsMulticore()) { +        auto& threads = GlobalScheduler().GetThreadList(); +        for (auto& thread : threads) { +            if (!thread->IsHLEThread()) { +                auto& arm_interface = thread->ArmInterface(); +                arm_interface.ClearInstructionCache(); +            } +        } +    } else { +        UNIMPLEMENTED_MSG("Cache Invalidation unimplemented for multicore"); +    }  }  void KernelCore::PrepareReschedule(std::size_t id) { diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index 37e893c84..dbd35580e 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp @@ -622,6 +622,7 @@ static void Break(Core::System& system, u32 reason, u64 info1, u64 info2) {          info2, has_dumped_buffer ? std::make_optional(debug_buffer) : std::nullopt);      if (!break_reason.signal_debugger) { +        SchedulerLock lock(system.Kernel());          LOG_CRITICAL(              Debug_Emulated,              "Emulated program broke execution! reason=0x{:016X}, info1=0x{:016X}, info2=0x{:016X}", @@ -633,9 +634,8 @@ static void Break(Core::System& system, u32 reason, u64 info1, u64 info2) {          const auto thread_processor_id = current_thread->GetProcessorID();          system.ArmInterface(static_cast<std::size_t>(thread_processor_id)).LogBacktrace(); -        system.Kernel().CurrentProcess()->PrepareForTermination(); -          // Kill the current thread +        system.Kernel().ExceptionalExit();          current_thread->Stop();      }  }  | 
