:: commit 6a5f349ab2896e13ef3d4d677aa95c75949bb32b

pitust <piotr@stelmaszek.com> — 2021-11-04 07:56

parents: 669a517231

bootboot: fix all the bad bugs

diff --git a/stage23/protos/bootboot.c b/stage23/protos/bootboot.c
index 9f5726c4..1b31a3f2 100644
--- a/stage23/protos/bootboot.c
+++ b/stage23/protos/bootboot.c
@@ -147,7 +147,7 @@ void bootboot_load(char *config) {
         cfgent[offset] = 0;
     }
 
-
+    /// Identity mapping ///
     for (uint64_t i = 0; i < 0x400000000; i += 0x200000) {
         map_page(pmap, i, i, 0x03, true);
     }
@@ -249,7 +249,7 @@ void bootboot_load(char *config) {
             if (e820e[i].type == 3) btype = 2;
             if (e820e[i].type == 4) btype = 2;
 
-            bootboot->mmap[i].size = (e820e[i].length & 0xF) | btype;
+            bootboot->mmap[i].size = (e820e[i].length & ~0xF) | btype;
             bootboot->mmap[i].ptr = e820e[i].base;
         }
         bootboot->size = 128 + mmapent * 16;
@@ -266,6 +266,9 @@ void bootboot_load(char *config) {
     rm_int(0x15, &r, &r);
 #endif
 
+    pic_mask_all();
+    io_apic_mask_all();
+
     irq_flush_type = IRQ_PIC_ONLY_FLUSH;
 
     for (size_t i = 0;i < numcores;i++) {
tab: 248 wrap: offon