diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2020-01-25 23:55:32 +0100 |
---|---|---|
committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2020-01-25 23:55:32 +0100 |
commit | 4d6a86b03fe6ae0d98838a21613b66d5196150af (patch) | |
tree | 21f4b8e63e6435b2d816936af8b494882a3cdfb2 /src/core/core_cpu.h | |
parent | Kernel: Implement Physical Core. (diff) | |
download | yuzu-4d6a86b03fe6ae0d98838a21613b66d5196150af.tar yuzu-4d6a86b03fe6ae0d98838a21613b66d5196150af.tar.gz yuzu-4d6a86b03fe6ae0d98838a21613b66d5196150af.tar.bz2 yuzu-4d6a86b03fe6ae0d98838a21613b66d5196150af.tar.lz yuzu-4d6a86b03fe6ae0d98838a21613b66d5196150af.tar.xz yuzu-4d6a86b03fe6ae0d98838a21613b66d5196150af.tar.zst yuzu-4d6a86b03fe6ae0d98838a21613b66d5196150af.zip |
Diffstat (limited to 'src/core/core_cpu.h')
-rw-r--r-- | src/core/core_cpu.h | 61 |
1 files changed, 3 insertions, 58 deletions
diff --git a/src/core/core_cpu.h b/src/core/core_cpu.h index 78f5021a2..6f7aec8f9 100644 --- a/src/core/core_cpu.h +++ b/src/core/core_cpu.h @@ -13,7 +13,7 @@ namespace Kernel { class GlobalScheduler; -class Scheduler; +class PhysicalCore; } // namespace Kernel namespace Core { @@ -30,32 +30,11 @@ class Memory; namespace Core { -class ARM_Interface; -class ExclusiveMonitor; - constexpr unsigned NUM_CPU_CORES{4}; -class CpuBarrier { -public: - bool IsAlive() const { - return !end; - } - - void NotifyEnd(); - - bool Rendezvous(); - -private: - unsigned cores_waiting{NUM_CPU_CORES}; - std::mutex mutex; - std::condition_variable condition; - std::atomic<bool> end{}; -}; - class Cpu { public: - Cpu(System& system, ExclusiveMonitor& exclusive_monitor, CpuBarrier& cpu_barrier, - std::size_t core_index); + Cpu(System& system, std::size_t core_index); ~Cpu(); void RunLoop(bool tight_loop = true); @@ -64,22 +43,6 @@ public: void PrepareReschedule(); - ARM_Interface& ArmInterface() { - return *arm_interface; - } - - const ARM_Interface& ArmInterface() const { - return *arm_interface; - } - - Kernel::Scheduler& Scheduler() { - return *scheduler; - } - - const Kernel::Scheduler& Scheduler() const { - return *scheduler; - } - bool IsMainCore() const { return core_index == 0; } @@ -88,29 +51,11 @@ public: return core_index; } - void Shutdown(); - - /** - * Creates an exclusive monitor to handle exclusive reads/writes. - * - * @param memory The current memory subsystem that the monitor may wish - * to keep track of. - * - * @param num_cores The number of cores to assume about the CPU. - * - * @returns The constructed exclusive monitor instance, or nullptr if the current - * CPU backend is unable to use an exclusive monitor. - */ - static std::unique_ptr<ExclusiveMonitor> MakeExclusiveMonitor(Memory::Memory& memory, - std::size_t num_cores); - private: void Reschedule(); - std::unique_ptr<ARM_Interface> arm_interface; - CpuBarrier& cpu_barrier; Kernel::GlobalScheduler& global_scheduler; - std::unique_ptr<Kernel::Scheduler> scheduler; + Kernel::PhysicalCore& physical_core; Timing::CoreTiming& core_timing; std::atomic<bool> reschedule_pending = false; |