diff options
| author | 2019-02-14 12:42:58 -0500 | |
|---|---|---|
| committer | 2019-02-15 21:50:25 -0500 | |
| commit | bd983414f643b734a1f8bebe3183723733344f72 (patch) | |
| tree | bda0421458439e25cba9d772a6a79b56e473d72e /src/core/core_cpu.h | |
| parent | Merge pull request #2113 from ReinUsesLisp/vulkan-base (diff) | |
| download | yuzu-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.h | 8 |
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 { | |||
| 15 | class Scheduler; | 15 | class Scheduler; |
| 16 | } | 16 | } |
| 17 | 17 | ||
| 18 | namespace Core::Timing { | ||
| 19 | class CoreTiming; | ||
| 20 | } | ||
| 21 | |||
| 18 | namespace Core { | 22 | namespace Core { |
| 19 | 23 | ||
| 20 | class ARM_Interface; | 24 | class ARM_Interface; |
| @@ -41,7 +45,8 @@ private: | |||
| 41 | 45 | ||
| 42 | class Cpu { | 46 | class Cpu { |
| 43 | public: | 47 | public: |
| 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; |