mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 11:57:34 +00:00
Kernel: Setup APIC AP cores boot environment before init_stage2
Since this range is mapped in already in the kernel page directory, we can initialize it before jumping into the first kernel process which lets us avoid mapping in the range into init_stage2's address space. This brings us half-way to removing the shared bottom 2 MiB mapping in every process, leaving only the Prekernel.
This commit is contained in:
parent
6c8f1e62db
commit
fd3be7ffcc
3 changed files with 34 additions and 9 deletions
|
@ -26,6 +26,7 @@ public:
|
|||
|
||||
bool init_bsp();
|
||||
void eoi();
|
||||
void setup_ap_boot_environment();
|
||||
void boot_aps();
|
||||
void enable(u32 cpu);
|
||||
void init_finished(u32 cpu);
|
||||
|
@ -90,7 +91,9 @@ private:
|
|||
|
||||
OwnPtr<Memory::Region> m_apic_base;
|
||||
Vector<OwnPtr<Processor>> m_ap_processor_info;
|
||||
Vector<OwnPtr<Memory::Region>> m_ap_temporary_boot_stacks;
|
||||
Vector<Thread*> m_ap_idle_threads;
|
||||
OwnPtr<Memory::Region> m_ap_boot_environment;
|
||||
Atomic<u8> m_apic_ap_count { 0 };
|
||||
Atomic<u8> m_apic_ap_continue { 0 };
|
||||
u32 m_processor_cnt { 0 };
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue