From f926e599fa30d33faee6ce0bba39e0413bd59df4 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Mon, 25 Aug 2025 18:26:13 +0300 Subject: [PATCH] Kernel: Zero initialize Processors This moves processor array to .bss reducing data size by 8192 bytes :) This needed GCC updated to 15.2.0 because of an internal compiler error I found :) --- kernel/include/kernel/Processor.h | 2 +- kernel/kernel/Processor.cpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/kernel/include/kernel/Processor.h b/kernel/include/kernel/Processor.h index bda1fc1d..45a4a2aa 100644 --- a/kernel/include/kernel/Processor.h +++ b/kernel/include/kernel/Processor.h @@ -158,7 +158,7 @@ namespace Kernel static BAN::Atomic s_is_smp_enabled; static BAN::Atomic s_should_print_cpu_load; - ProcessorID m_id { PROCESSOR_NONE }; + ProcessorID m_id { 0 }; static constexpr size_t s_stack_size { 4096 }; void* m_stack { nullptr }; diff --git a/kernel/kernel/Processor.cpp b/kernel/kernel/Processor.cpp index 5f181de3..037c570c 100644 --- a/kernel/kernel/Processor.cpp +++ b/kernel/kernel/Processor.cpp @@ -47,6 +47,10 @@ namespace Kernel if (s_bsp_id == PROCESSOR_NONE || id == PROCESSOR_NONE || id.m_id >= s_processors.size()) Kernel::panic("Trying to initialize invalid processor {}", id.m_id); + if (id == s_bsp_id) + for (auto& processor : s_processors) + processor.m_id = PROCESSOR_NONE; + auto& processor = s_processors[id.m_id]; ASSERT(processor.m_id == PROCESSOR_NONE);