use actually available memory for memory manager
This commit is contained in:
parent
fda9f4b9dd
commit
2219635e99
|
@ -117,12 +117,18 @@ void _start(struct stivale2_struct *stivale2_struct) {
|
|||
|
||||
printf("Framebuffer | addr: %#lX, width: %d, height: %d, depth: %d, pitch: %d\n", (usize)framebuffer->address, framebuffer->width, framebuffer->height, framebuffer->depth, framebuffer->pitch);
|
||||
|
||||
u64 total_memory = 0;
|
||||
u64 total_memory, largest_usable_base, largest_usable_size;
|
||||
for (u64 i = 0; i < tag_mmap->entries; i++) {
|
||||
struct stivale2_mmap_entry entry = tag_mmap->memmap[i];
|
||||
char *entry_name;
|
||||
switch (entry.type) {
|
||||
case STIVALE2_MMAP_USABLE: entry_name = "Usable"; break;
|
||||
case STIVALE2_MMAP_USABLE:
|
||||
entry_name = "Usable";
|
||||
if (entry.length > largest_usable_size) {
|
||||
largest_usable_base = entry.base;
|
||||
largest_usable_size = entry.length;
|
||||
}
|
||||
break;
|
||||
case STIVALE2_MMAP_RESERVED: entry_name = "Reserved"; break;
|
||||
case STIVALE2_MMAP_ACPI_RECLAIMABLE: entry_name = "ACPI Reclaimable"; break;
|
||||
case STIVALE2_MMAP_ACPI_NVS: entry_name = "ACPI NVS"; break;
|
||||
|
@ -137,6 +143,13 @@ void _start(struct stivale2_struct *stivale2_struct) {
|
|||
}
|
||||
printf("Total memory: %ld KiB\n", total_memory / 1024);
|
||||
//printf("\"\"\"Used\"\"\" memory: %ld B\n", (_kernel_end - _kernel_start));
|
||||
|
||||
printf("Memory map entry chosen for memory manager | base: %#lX, length: %ld KiB\n", largest_usable_base, largest_usable_size / 1024);
|
||||
mem_populate_blocks(largest_usable_base);
|
||||
|
||||
if (mem_test_mm()) {
|
||||
printf("memory manager test passed\n");
|
||||
}
|
||||
|
||||
printf("Preparing interrupts... ");
|
||||
pic_init();
|
||||
|
@ -162,14 +175,6 @@ void _start(struct stivale2_struct *stivale2_struct) {
|
|||
usize start_mem_addr = (usize)_start;
|
||||
printf("_start memory address: %#lX\n", start_mem_addr);
|
||||
|
||||
mem_populate_blocks(start_mem_addr + 0x42069); /* TODO: pick an actual known free memory location instead of this random one */
|
||||
|
||||
/*
|
||||
if (mem_test_mm()) {
|
||||
printf("memory manager test passed\n");
|
||||
}
|
||||
*/
|
||||
|
||||
printf("----------\n");
|
||||
printf("hello yes");
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#include <mem/mem.h>
|
||||
#include <stdio.h>
|
||||
#include <std/stdio.h>
|
||||
|
||||
struct mem_block mem_blocks[MEM_BLOCK_LIST_SIZE];
|
||||
|
||||
|
|
Loading…
Reference in a new issue