diff --git a/Kernel/init.cpp b/Kernel/init.cpp index cd2832e985..2c46189715 100644 --- a/Kernel/init.cpp +++ b/Kernel/init.cpp @@ -119,6 +119,11 @@ extern "C" [[noreturn]] void init() gdt_init(); idt_init(); + // Invoke all static global constructors in the kernel. + // Note that we want to do this as early as possible. + for (ctor_func_t* ctor = &start_ctors; ctor < &end_ctors; ctor++) + (*ctor)(); + setup_interrupts(); setup_acpi(); @@ -134,10 +139,6 @@ extern "C" [[noreturn]] void init() setup_time_management(); - // call global constructors after gtd and itd init - for (ctor_func_t* ctor = &start_ctors; ctor < &end_ctors; ctor++) - (*ctor)(); - new NullDevice; if (!get_serial_debug()) new SerialDevice(SERIAL_COM1_ADDR, 64);