#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace kapi::boot_modules { auto init(kapi::devices::bus & bus) -> void { kstd::println("[x86_64:BOOT_MODULES] Attaching boot modules."); auto modules = boot::bootstrap_information.mbi->modules(); std::ranges::for_each(std::views::enumerate(modules), [&bus](auto entry) { auto [index, module] = entry; auto boot_module = kapi::boot_modules::module{ .name = module.string(), .start_address = memory::linear_address{module.start_address + std::bit_cast(&arch::boot::TEACHOS_VMA)}, .size = module.end_address - module.start_address}; auto device = kstd::make_shared(index, boot_module); bus.add_child(device); }); } } // namespace kapi::boot_modules