:: commit 0c37d48317be19246d18ee405449689d864257c5

Mintsuki <mintsuki@protonmail.com> — 2026-02-07 08:43

parents: 48691f02a2

protos/multiboot2: Implement relocatable preference=2 (prefer highest)

diff --git a/common/protos/multiboot2.c b/common/protos/multiboot2.c
index a1ccc26e..46393a86 100644
--- a/common/protos/multiboot2.c
+++ b/common/protos/multiboot2.c
@@ -377,23 +377,20 @@ noreturn void multiboot2_load(char *config, char* cmdline) {
 
         switch (reloc_tag.preference) {
             default:
-            case 0: case 1: case 2: // Prefer lowest to highest
+            case 0: case 1: // No preference / prefer lowest
                 reloc_ascend = true;
                 relocated_base = ALIGN_UP(reloc_tag.min_addr, reloc_tag.align);
                 if (relocated_base + ranges->length > reloc_tag.max_addr) {
                     goto reloc_fail;
                 }
                 break;
-/*
-            XXX: We do not support this properly, hence ignore, for now.
-            case 2: // Prefer highest to lowest
+            case 2: // Prefer highest
                 reloc_ascend = false;
                 relocated_base = ALIGN_DOWN(reloc_tag.max_addr - ranges->length, reloc_tag.align);
                 if (relocated_base < reloc_tag.min_addr) {
                     goto reloc_fail;
                 }
                 break;
-*/
         }
 
         for (;;) {
tab: 248 wrap: offon