core: cpu_manager: Use KScopedDisableDispatch.
This commit is contained in:
		| @@ -118,17 +118,18 @@ void CpuManager::MultiCoreRunGuestLoop() { | ||||
|             physical_core = &kernel.CurrentPhysicalCore(); | ||||
|         } | ||||
|         system.ExitDynarmicProfile(); | ||||
|         { | ||||
|             Kernel::KScopedDisableDispatch dd(kernel); | ||||
|             physical_core->ArmInterface().ClearExclusiveState(); | ||||
|         kernel.CurrentScheduler()->RescheduleCurrentCore(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| void CpuManager::MultiCoreRunIdleThread() { | ||||
|     auto& kernel = system.Kernel(); | ||||
|     while (true) { | ||||
|         auto& physical_core = kernel.CurrentPhysicalCore(); | ||||
|         physical_core.Idle(); | ||||
|         kernel.CurrentScheduler()->RescheduleCurrentCore(); | ||||
|         Kernel::KScopedDisableDispatch dd(kernel); | ||||
|         kernel.CurrentPhysicalCore().Idle(); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @@ -136,12 +137,12 @@ void CpuManager::MultiCoreRunSuspendThread() { | ||||
|     auto& kernel = system.Kernel(); | ||||
|     kernel.CurrentScheduler()->OnThreadStart(); | ||||
|     while (true) { | ||||
|         auto core = kernel.GetCurrentHostThreadID(); | ||||
|         auto core = kernel.CurrentPhysicalCoreIndex(); | ||||
|         auto& scheduler = *kernel.CurrentScheduler(); | ||||
|         Kernel::KThread* current_thread = scheduler.GetCurrentThread(); | ||||
|         Common::Fiber::YieldTo(current_thread->GetHostContext(), *core_data[core].host_context); | ||||
|         ASSERT(scheduler.ContextSwitchPending()); | ||||
|         ASSERT(core == kernel.GetCurrentHostThreadID()); | ||||
|         ASSERT(core == kernel.CurrentPhysicalCoreIndex()); | ||||
|         scheduler.RescheduleCurrentCore(); | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user