summaryrefslogtreecommitdiff
path: root/src/core/core_cpu.h
diff options
context:
space:
mode:
authorGravatar Mat M2018-07-22 12:48:44 -0400
committerGravatar GitHub2018-07-22 12:48:44 -0400
commit5fc99553d20d7d747730f7da4d12bdeb0593adb2 (patch)
tree4f3217d3f564c47b8aeecac046e389ba6d3d07ed /src/core/core_cpu.h
parentMerge pull request #772 from MerryMage/dynarmic (diff)
parentImplement exclusive monitor (diff)
downloadyuzu-5fc99553d20d7d747730f7da4d12bdeb0593adb2.tar.gz
yuzu-5fc99553d20d7d747730f7da4d12bdeb0593adb2.tar.xz
yuzu-5fc99553d20d7d747730f7da4d12bdeb0593adb2.zip
Merge pull request #638 from MerryMage/mp
Implement exclusive monitor
Diffstat (limited to 'src/core/core_cpu.h')
-rw-r--r--src/core/core_cpu.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/core/core_cpu.h b/src/core/core_cpu.h
index 243f0b5e7..976952903 100644
--- a/src/core/core_cpu.h
+++ b/src/core/core_cpu.h
@@ -10,6 +10,7 @@
10#include <mutex> 10#include <mutex>
11#include <string> 11#include <string>
12#include "common/common_types.h" 12#include "common/common_types.h"
13#include "core/arm/exclusive_monitor.h"
13 14
14class ARM_Interface; 15class ARM_Interface;
15 16
@@ -40,7 +41,8 @@ private:
40 41
41class Cpu { 42class Cpu {
42public: 43public:
43 Cpu(std::shared_ptr<CpuBarrier> cpu_barrier, size_t core_index); 44 Cpu(std::shared_ptr<ExclusiveMonitor> exclusive_monitor,
45 std::shared_ptr<CpuBarrier> cpu_barrier, size_t core_index);
44 46
45 void RunLoop(bool tight_loop = true); 47 void RunLoop(bool tight_loop = true);
46 48
@@ -64,6 +66,12 @@ public:
64 return core_index == 0; 66 return core_index == 0;
65 } 67 }
66 68
69 size_t CoreIndex() const {
70 return core_index;
71 }
72
73 static std::shared_ptr<ExclusiveMonitor> MakeExclusiveMonitor(size_t num_cores);
74
67private: 75private:
68 void Reschedule(); 76 void Reschedule();
69 77