summaryrefslogtreecommitdiff
path: root/src/core/cpu_manager.cpp
diff options
context:
space:
mode:
authorGravatar Fernando Sahmkow2020-03-12 16:48:43 -0400
committerGravatar Fernando Sahmkow2020-06-27 11:35:48 -0400
commit7020d498c5aef7c1180bfc57031cdd7fbfecdf0f (patch)
treef2508e39a02966cdd4d9acda1e14ed93cdc150cd /src/core/cpu_manager.cpp
parentGeneral: Fix Stop function (diff)
downloadyuzu-7020d498c5aef7c1180bfc57031cdd7fbfecdf0f.tar.gz
yuzu-7020d498c5aef7c1180bfc57031cdd7fbfecdf0f.tar.xz
yuzu-7020d498c5aef7c1180bfc57031cdd7fbfecdf0f.zip
General: Fix microprofile on dynarmic/svc, fix wait tree showing which threads were running.
Diffstat (limited to 'src/core/cpu_manager.cpp')
-rw-r--r--src/core/cpu_manager.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/core/cpu_manager.cpp b/src/core/cpu_manager.cpp
index 95842aad1..9e2e6d49f 100644
--- a/src/core/cpu_manager.cpp
+++ b/src/core/cpu_manager.cpp
@@ -118,9 +118,11 @@ void CpuManager::MultiCoreRunGuestLoop() {
118 host_context.reset(); 118 host_context.reset();
119 while (true) { 119 while (true) {
120 auto& physical_core = kernel.CurrentPhysicalCore(); 120 auto& physical_core = kernel.CurrentPhysicalCore();
121 system.EnterDynarmicProfile();
121 while (!physical_core.IsInterrupted()) { 122 while (!physical_core.IsInterrupted()) {
122 physical_core.Run(); 123 physical_core.Run();
123 } 124 }
125 system.ExitDynarmicProfile();
124 physical_core.ClearExclusive(); 126 physical_core.ClearExclusive();
125 auto& scheduler = physical_core.Scheduler(); 127 auto& scheduler = physical_core.Scheduler();
126 scheduler.TryDoContextSwitch(); 128 scheduler.TryDoContextSwitch();
@@ -216,6 +218,7 @@ void CpuManager::SingleCoreRunGuestLoop() {
216 host_context.reset(); 218 host_context.reset();
217 while (true) { 219 while (true) {
218 auto& physical_core = kernel.CurrentPhysicalCore(); 220 auto& physical_core = kernel.CurrentPhysicalCore();
221 system.EnterDynarmicProfile();
219 while (!physical_core.IsInterrupted()) { 222 while (!physical_core.IsInterrupted()) {
220 physical_core.Run(); 223 physical_core.Run();
221 preemption_count++; 224 preemption_count++;
@@ -224,6 +227,7 @@ void CpuManager::SingleCoreRunGuestLoop() {
224 } 227 }
225 } 228 }
226 physical_core.ClearExclusive(); 229 physical_core.ClearExclusive();
230 system.ExitDynarmicProfile();
227 PreemptSingleCore(); 231 PreemptSingleCore();
228 auto& scheduler = kernel.Scheduler(current_core); 232 auto& scheduler = kernel.Scheduler(current_core);
229 scheduler.TryDoContextSwitch(); 233 scheduler.TryDoContextSwitch();