summaryrefslogtreecommitdiff
path: root/src/core/core_cpu.h
diff options
context:
space:
mode:
authorGravatar Lioncash2019-02-14 12:42:58 -0500
committerGravatar Lioncash2019-02-15 21:50:25 -0500
commitbd983414f643b734a1f8bebe3183723733344f72 (patch)
treebda0421458439e25cba9d772a6a79b56e473d72e /src/core/core_cpu.h
parentMerge pull request #2113 from ReinUsesLisp/vulkan-base (diff)
downloadyuzu-bd983414f643b734a1f8bebe3183723733344f72.tar.gz
yuzu-bd983414f643b734a1f8bebe3183723733344f72.tar.xz
yuzu-bd983414f643b734a1f8bebe3183723733344f72.zip
core_timing: Convert core timing into a class
Gets rid of the largest set of mutable global state within the core. This also paves a way for eliminating usages of GetInstance() on the System class as a follow-up. Note that no behavioral changes have been made, and this simply extracts the functionality into a class. This also has the benefit of making dependencies on the core timing functionality explicit within the relevant interfaces.
Diffstat (limited to 'src/core/core_cpu.h')
-rw-r--r--src/core/core_cpu.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/core/core_cpu.h b/src/core/core_cpu.h
index 1d2bdc6cd..e2204c6b0 100644
--- a/src/core/core_cpu.h
+++ b/src/core/core_cpu.h
@@ -15,6 +15,10 @@ namespace Kernel {
15class Scheduler; 15class Scheduler;
16} 16}
17 17
18namespace Core::Timing {
19class CoreTiming;
20}
21
18namespace Core { 22namespace Core {
19 23
20class ARM_Interface; 24class ARM_Interface;
@@ -41,7 +45,8 @@ private:
41 45
42class Cpu { 46class Cpu {
43public: 47public:
44 Cpu(ExclusiveMonitor& exclusive_monitor, CpuBarrier& cpu_barrier, std::size_t core_index); 48 Cpu(Timing::CoreTiming& core_timing, ExclusiveMonitor& exclusive_monitor,
49 CpuBarrier& cpu_barrier, std::size_t core_index);
45 ~Cpu(); 50 ~Cpu();
46 51
47 void RunLoop(bool tight_loop = true); 52 void RunLoop(bool tight_loop = true);
@@ -82,6 +87,7 @@ private:
82 std::unique_ptr<ARM_Interface> arm_interface; 87 std::unique_ptr<ARM_Interface> arm_interface;
83 CpuBarrier& cpu_barrier; 88 CpuBarrier& cpu_barrier;
84 std::unique_ptr<Kernel::Scheduler> scheduler; 89 std::unique_ptr<Kernel::Scheduler> scheduler;
90 Timing::CoreTiming& core_timing;
85 91
86 std::atomic<bool> reschedule_pending = false; 92 std::atomic<bool> reschedule_pending = false;
87 std::size_t core_index; 93 std::size_t core_index;