Quellcode durchsuchen

Kernel: Panic early if the kernel gets too big for its memory slot

Let's help our future selves find this problem sooner next time it
happens. Hopefully we'll come up with a nicer loader before then,
but who knows. :^)
Andreas Kling vor 4 Jahren
Ursprung
Commit
98f08a8bad
1 geänderte Dateien mit 7 neuen und 0 gelöschten Zeilen
  1. 7 0
      Kernel/init.cpp

+ 7 - 0
Kernel/init.cpp

@@ -88,6 +88,8 @@ extern "C" u8* end_of_safemem_text;
 extern "C" u8* start_of_safemem_atomic_text;
 extern "C" u8* end_of_safemem_atomic_text;
 
+extern "C" FlatPtr end_of_kernel_image;
+
 multiboot_module_entry_t multiboot_copy_boot_modules_array[16];
 size_t multiboot_copy_boot_modules_count;
 
@@ -120,6 +122,11 @@ static Processor s_bsp_processor; // global but let's keep it "private"
 
 extern "C" UNMAP_AFTER_INIT [[noreturn]] void init()
 {
+    if ((FlatPtr)&end_of_kernel_image >= 0xc1000000u) {
+        // The kernel has grown too large again!
+        asm volatile("cli;hlt");
+    }
+
     setup_serial_debug();
 
     // We need to copy the command line before kmalloc is initialized,