Allow free space in f-segment to be used by malloc_fseg().
authorKevin O'Connor <kevin@koconnor.net>
Thu, 4 Aug 2011 00:15:26 +0000 (20:15 -0400)
committerKevin O'Connor <kevin@koconnor.net>
Thu, 4 Aug 2011 00:15:26 +0000 (20:15 -0400)
src/optionroms.c
src/pmm.c

index be02f2aa245c51631582637c7e72d836a51a1b20..2832eab1ab42b696292faf3eec1090ac0f99d003 100644 (file)
@@ -483,7 +483,7 @@ vga_setup(void)
         init_optionrom((void*)BUILD_ROM_START, 0, 1);
     } else {
         // Clear option rom memory
-        memset((void*)RomEnd, 0, _max_rom() - RomEnd);
+        memset((void*)RomEnd, 0, max_rom() - RomEnd);
 
         // Find and deploy PCI VGA rom.
         struct pci_device *pci;
index b812515c235eb96af30bc3ff7e8c42b509d9fa59..82a0b1d0dc4fb61ff58605fe5683d904cb5323d0 100644 (file)
--- a/src/pmm.c
+++ b/src/pmm.c
@@ -216,6 +216,13 @@ malloc_fixupreloc(void)
         struct zone_s *zone = Zones[i];
         zone->info->pprev = &zone->info;
     }
+
+    // Add space free'd during relocation in f-segment to ZoneFSeg
+    extern u8 code32init_end[];
+    if ((u32)code32init_end > BUILD_BIOS_ADDR) {
+        memset((void*)BUILD_BIOS_ADDR, 0, (u32)code32init_end - BUILD_BIOS_ADDR);
+        addSpace(&ZoneFSeg, (void*)BUILD_BIOS_ADDR, code32init_end);
+    }
 }
 
 void