summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel
diff options
context:
space:
mode:
authorFernando Sahmkow <fsahmkow27@gmail.com>2020-06-28 00:20:06 +0200
committerFernando Sahmkow <fsahmkow27@gmail.com>2020-06-28 00:20:06 +0200
commit2f8947583f2f0af4058600243d6c1d244e3c4890 (patch)
treea0e7a10c6131efb23d6fdb3ee7fc0de4bd4163af /src/core/hle/kernel
parentNvFlinger: Clang Format. (diff)
downloadyuzu-2f8947583f2f0af4058600243d6c1d244e3c4890.tar
yuzu-2f8947583f2f0af4058600243d6c1d244e3c4890.tar.gz
yuzu-2f8947583f2f0af4058600243d6c1d244e3c4890.tar.bz2
yuzu-2f8947583f2f0af4058600243d6c1d244e3c4890.tar.lz
yuzu-2f8947583f2f0af4058600243d6c1d244e3c4890.tar.xz
yuzu-2f8947583f2f0af4058600243d6c1d244e3c4890.tar.zst
yuzu-2f8947583f2f0af4058600243d6c1d244e3c4890.zip
Diffstat (limited to 'src/core/hle/kernel')
-rw-r--r--src/core/hle/kernel/kernel.cpp14
-rw-r--r--src/core/hle/kernel/physical_core.cpp4
-rw-r--r--src/core/hle/kernel/physical_core.h7
-rw-r--r--src/core/hle/kernel/scheduler.cpp4
-rw-r--r--src/core/hle/kernel/scheduler.h4
5 files changed, 17 insertions, 16 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index dbb75416d..1f2af7a1b 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -472,16 +472,12 @@ const Core::ExclusiveMonitor& KernelCore::GetExclusiveMonitor() const {
}
void KernelCore::InvalidateAllInstructionCaches() {
- if (!IsMulticore()) {
- auto& threads = GlobalScheduler().GetThreadList();
- for (auto& thread : threads) {
- if (!thread->IsHLEThread()) {
- auto& arm_interface = thread->ArmInterface();
- arm_interface.ClearInstructionCache();
- }
+ 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");
}
}
diff --git a/src/core/hle/kernel/physical_core.cpp b/src/core/hle/kernel/physical_core.cpp
index c82c60a16..c6bbdb080 100644
--- a/src/core/hle/kernel/physical_core.cpp
+++ b/src/core/hle/kernel/physical_core.cpp
@@ -37,6 +37,10 @@ void PhysicalCore::Shutdown() {
scheduler.Shutdown();
}
+bool PhysicalCore::IsInterrupted() const {
+ return interrupt_handler.IsInterrupted();
+}
+
void PhysicalCore::Interrupt() {
guard->lock();
interrupt_handler.SetInterrupt(true);
diff --git a/src/core/hle/kernel/physical_core.h b/src/core/hle/kernel/physical_core.h
index 85f6dec05..d7a7a951c 100644
--- a/src/core/hle/kernel/physical_core.h
+++ b/src/core/hle/kernel/physical_core.h
@@ -7,8 +7,6 @@
#include <cstddef>
#include <memory>
-#include "core/arm/cpu_interrupt_handler.h"
-
namespace Common {
class SpinLock;
}
@@ -19,6 +17,7 @@ class Scheduler;
namespace Core {
class ARM_Interface;
+class CPUInterruptHandler;
class ExclusiveMonitor;
class System;
} // namespace Core
@@ -45,9 +44,7 @@ public:
void ClearInterrupt();
/// Check if this core is interrupted
- bool IsInterrupted() const {
- return interrupt_handler.IsInterrupted();
- }
+ bool IsInterrupted() const;
// Shutdown this physical core.
void Shutdown();
diff --git a/src/core/hle/kernel/scheduler.cpp b/src/core/hle/kernel/scheduler.cpp
index 61b8a396a..2b12c0dbf 100644
--- a/src/core/hle/kernel/scheduler.cpp
+++ b/src/core/hle/kernel/scheduler.cpp
@@ -658,7 +658,7 @@ void Scheduler::Reload() {
cpu_core.LoadContext(thread->GetContext64());
cpu_core.SetTlsAddress(thread->GetTLSAddress());
cpu_core.SetTPIDR_EL0(thread->GetTPIDR_EL0());
- cpu_core.ChangeProcessorId(this->core_id);
+ cpu_core.ChangeProcessorID(this->core_id);
cpu_core.ClearExclusiveState();
}
}
@@ -691,7 +691,7 @@ void Scheduler::SwitchContextStep2() {
cpu_core.LoadContext(new_thread->GetContext64());
cpu_core.SetTlsAddress(new_thread->GetTLSAddress());
cpu_core.SetTPIDR_EL0(new_thread->GetTPIDR_EL0());
- cpu_core.ChangeProcessorId(this->core_id);
+ cpu_core.ChangeProcessorID(this->core_id);
cpu_core.ClearExclusiveState();
}
}
diff --git a/src/core/hle/kernel/scheduler.h b/src/core/hle/kernel/scheduler.h
index 348107160..b3b4b5169 100644
--- a/src/core/hle/kernel/scheduler.h
+++ b/src/core/hle/kernel/scheduler.h
@@ -240,6 +240,10 @@ public:
return switch_fiber;
}
+ const std::shared_ptr<Common::Fiber>& ControlContext() const {
+ return switch_fiber;
+ }
+
private:
friend class GlobalScheduler;