Fixed calculation of kernel binary size in initialize()

This commit is contained in:
2021-04-17 04:57:12 -05:00
parent 55c5db056e
commit 7c0c5cd8ce

View File

@@ -26,7 +26,7 @@ int initialize(void *multiboot_info)
initialize_idt(); initialize_idt();
initialize_allocator(&_kernel_end, (void*)0xFFC00000); initialize_allocator(&_kernel_end, (void*)0xFFC00000);
static struct page_stack_t page_stack; static struct page_stack_t page_stack;
struct memory_region_t map_array[16]; struct memory_region_t map_array[24];
char bootloader_name[64]; char bootloader_name[64];
char kernel_parameters[64]; char kernel_parameters[64];
struct boot_info_t boot_info = { struct boot_info_t boot_info = {
@@ -36,14 +36,14 @@ int initialize(void *multiboot_info)
.map = { .map = {
.array = map_array, .array = map_array,
.size = 0, .size = 0,
.capacity = 16}}; .capacity = 24}};
void *multiboot_end = multiboot_info + *(uint32_t*)multiboot_info; void *multiboot_end = multiboot_info + *(uint32_t*)multiboot_info;
multiboot_info += 8; multiboot_info += 8;
while (multiboot_info != NULL) while (multiboot_info != NULL)
{ {
multiboot_info = read_multiboot_table(&boot_info, multiboot_info); multiboot_info = read_multiboot_table(&boot_info, multiboot_info);
} }
insert_region(&boot_info.map, (physaddr_t)&_kernel_pstart, (physaddr_t)&_kernel_pend, M_UNAVAILABLE); insert_region(&boot_info.map, (physaddr_t)&_kernel_pstart, (physaddr_t)&_kernel_pend - (physaddr_t)&_kernel_pstart, M_UNAVAILABLE);
for(void *p = (void*)&_kernel_end; p < multiboot_end; p += page_size) for(void *p = (void*)&_kernel_end; p < multiboot_end; p += page_size)
{ {
unmap_page(p); unmap_page(p);