:: commit a48a90a81a83955169a19cd64ed57a75c1a44023

mintsuki <mintsuki@protonmail.com> — 2023-03-24 08:07

parents: 328b817474

limine: Load internal modules before config modules

diff --git a/common/protos/limine.c b/common/protos/limine.c
index 74c8722b..2b50d955 100644
--- a/common/protos/limine.c
+++ b/common/protos/limine.c
@@ -634,8 +634,6 @@ FEAT_START
             break;
     }
 
-    size_t config_module_count = module_count;
-
     if (module_request->revision >= 1) {
         module_count += module_request->internal_module_count;
     }
@@ -653,19 +651,19 @@ FEAT_START
         char *module_path;
         char *module_cmdline;
 
-        if (i < config_module_count) {
+        if (i < module_request->internal_module_count) {
+            uint64_t *internal_modules = (void *)get_phys_addr(module_request->internal_modules);
+            struct limine_internal_module *internal_module = (void *)get_phys_addr(internal_modules[i]);
+
+            module_path = (char *)get_phys_addr(internal_module->path);
+            module_cmdline = (char *)get_phys_addr(internal_module->cmdline);
+        } else {
             struct conf_tuple conf_tuple =
-                    config_get_tuple(config, i,
+                    config_get_tuple(config, i - module_request->internal_module_count,
                                      "MODULE_PATH", "MODULE_CMDLINE");
 
             module_path = conf_tuple.value1;
             module_cmdline = conf_tuple.value2;
-        } else {
-            uint64_t *internal_modules = (void *)get_phys_addr(module_request->internal_modules);
-            struct limine_internal_module *internal_module = (void *)get_phys_addr(internal_modules[i - config_module_count]);
-
-            module_path = (char *)get_phys_addr(internal_module->path);
-            module_cmdline = (char *)get_phys_addr(internal_module->cmdline);
         }
 
         if (module_cmdline == NULL) {
tab: 248 wrap: offon