diff --git a/Kernel/Arch/init.cpp b/Kernel/Arch/init.cpp index 64ff25478f..70a8926025 100644 --- a/Kernel/Arch/init.cpp +++ b/Kernel/Arch/init.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -84,6 +85,9 @@ extern "C" u8 start_of_safemem_atomic_text[]; extern "C" u8 end_of_safemem_atomic_text[]; #endif +extern "C" USB::DriverInitFunction driver_init_table_start[]; +extern "C" USB::DriverInitFunction driver_init_table_end[]; + extern "C" u8 end_of_kernel_image[]; multiboot_module_entry_t multiboot_copy_boot_modules_array[16]; @@ -417,6 +421,10 @@ void init_stage2(void*) PANIC("VirtualFileSystem::mount_root failed"); } + // Initialise all USB Drivers + for (auto* init_function = driver_init_table_start; init_function != driver_init_table_end; init_function++) + (*init_function)(); + // Switch out of early boot mode. g_in_early_boot = false;