Nigel
5051b8903c
The first stage after GRUB will be Pre-Kernel. This stage will organize the information we receive from the bootloader. (in our case that will be grub) The second stage is for now called early_main. The program will at this point already be running in virtual higher-half / higher-quarter address space. The goal of the second stage is to set up the kernel in such a way that we are ready to jump in to usermode. The third stage is for now called kernel_main. This stage will jump us into usermode and load the startup programs. - Added a GRUB entry for tests - Started writing the pre-kernel stage - Removed knowledge of multiboot from early_main - Edited the linkerscript to link variables in pre-kernel to lower address space. ( from 1MB and up)
44 lines
1.2 KiB
C++
44 lines
1.2 KiB
C++
#include "MBI_MMap.h"
|
|
|
|
/*
|
|
void mapMultibootMemoryMap( MemoryInfo* memInfo , multiboot_info_t *mbt) {
|
|
|
|
printf("mmap_addr = 0x%x, mmap_length = 0x%x\n", (unsigned) mbt->mmap_addr , (unsigned) mbt->mmap_length );
|
|
|
|
|
|
multiboot_memory_map_t *mmap = (multiboot_memory_map_t*) mbt->mmap_addr;
|
|
|
|
for (; (unsigned long) mmap < mbt->mmap_addr + mbt->mmap_length; mmap = (multiboot_memory_map_t *) ((unsigned long) mmap + mmap->size + sizeof(mmap->size))){
|
|
|
|
if ( mmap->type == MULTIBOOT_MEMORY_AVAILABLE){
|
|
|
|
memInfo->TotalMemory += mmap->len;
|
|
} else {
|
|
memInfo->ReservedMemory += mmap->len;
|
|
}
|
|
|
|
print_Multiboot_memory_Map(mmap);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
*/
|
|
/**
|
|
* @brief Debug Verbose functions
|
|
*
|
|
* @param mmap
|
|
*/
|
|
/*
|
|
void print_Multiboot_memory_Map(multiboot_memory_map_t* mmap) {
|
|
printf(
|
|
"size = 0x%x, base_addr = 0x%x%08x, length = 0x%x%08x, type = 0x%x\n",
|
|
(unsigned) mmap->size,
|
|
(unsigned) (mmap->addr >> 32),
|
|
(unsigned) (mmap->addr & 0xffffffff),
|
|
(unsigned) (mmap->len >> 32),
|
|
(unsigned) (mmap->len & 0xffffffff),
|
|
(unsigned) mmap->type
|
|
);
|
|
}
|
|
*/ |