core: cpu_manager: Use KScopedDisableDispatch.
This commit is contained in:
		@@ -118,17 +118,18 @@ void CpuManager::MultiCoreRunGuestLoop() {
 | 
			
		||||
            physical_core = &kernel.CurrentPhysicalCore();
 | 
			
		||||
        }
 | 
			
		||||
        system.ExitDynarmicProfile();
 | 
			
		||||
        physical_core->ArmInterface().ClearExclusiveState();
 | 
			
		||||
        kernel.CurrentScheduler()->RescheduleCurrentCore();
 | 
			
		||||
        {
 | 
			
		||||
            Kernel::KScopedDisableDispatch dd(kernel);
 | 
			
		||||
            physical_core->ArmInterface().ClearExclusiveState();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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