diff --git a/src/system/kernel/cpu.cpp b/src/system/kernel/cpu.cpp index cf88f310a9..090cd58aba 100644 --- a/src/system/kernel/cpu.cpp +++ b/src/system/kernel/cpu.cpp @@ -150,7 +150,7 @@ cpu_preboot_init_percpu(kernel_args *args, int curr_cpu) // we can use it for get_current_cpu memset(&gCPU[curr_cpu], 0, sizeof(gCPU[curr_cpu])); gCPU[curr_cpu].cpu_num = curr_cpu; - gCPUEnabled.SetBit(curr_cpu); + gCPUEnabled.SetBitAtomic(curr_cpu); list_init(&gCPU[curr_cpu].irqs); B_INITIALIZE_SPINLOCK(&gCPU[curr_cpu].irqs_lock); diff --git a/src/system/kernel/scheduler/scheduler.cpp b/src/system/kernel/scheduler/scheduler.cpp index 3ea4f8eb2d..5697012b81 100644 --- a/src/system/kernel/scheduler/scheduler.cpp +++ b/src/system/kernel/scheduler/scheduler.cpp @@ -379,7 +379,7 @@ reschedule(int32 nextState) // select thread with the biggest priority and enqueue back the old thread ThreadData* nextThreadData; - if (gCPU[thisCPU].disabled) { + if (!gCPUEnabled.GetBit(thisCPU)) { if (!oldThreadData->IsIdle()) { if (oldThread->pinned_to_cpu == 0) { putOldThreadAtBack = true;