29 lines
758 B
C
29 lines
758 B
C
#include "kernel.h"
|
|
#include "mmgr.h"
|
|
#include "x86/multiboot2.h"
|
|
#include "x86/idt.h"
|
|
#include "system.h"
|
|
|
|
void x86_startup(void *multiboot_info)
|
|
{
|
|
memory_region_t map_array[24];
|
|
char bootloader_name[64];
|
|
char kernel_parameters[64];
|
|
struct boot_info_t boot_info = {
|
|
.bootloader = bootloader_name,
|
|
.parameters = kernel_parameters,
|
|
.module_count = 0,
|
|
.map = {
|
|
.array = map_array,
|
|
.size = 0,
|
|
.capacity = 24}};
|
|
initialize_gdt();
|
|
initialize_idt();
|
|
void *multiboot_end = read_multiboot_table(&boot_info, multiboot_info);
|
|
for(void *p = (void*)&_kernel_end; p < multiboot_end; p += page_size)
|
|
{
|
|
unmap_page(p);
|
|
}
|
|
kernel_initialize(&boot_info);
|
|
}
|