luxos/Kernel/main.c

47 lines
902 B
C
Raw Permalink Normal View History

#include "hal/hal.h"
#include "drivers/drivers.h"
#include <debugio.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <multiboot.h>
2021-09-14 15:57:06 +00:00
#include <tasking.h>
extern uint32 _end;
extern void luxInitrdInstall (MultibootInfo* info);
2021-09-14 16:02:20 +00:00
void k_main(MultibootInfo* info, uint32 initial_stack)
{
2021-09-14 16:02:20 +00:00
TaskingSetInitialStack(initial_stack);
uint32 KernelEnd = (uint32)&_end;
// Find kernel's end
if (info->Flags & 0x8) {
uint32 i = 0;
MultibootModule* modules = (MultibootModule*) info->ModulesAddress;
for (i = 0; i < info->ModulesCount; i++)
KernelEnd = Max(KernelEnd, modules[i].ModuleEnd);
}
ConsoleClear();
MemoryTempInitialize(KernelEnd);
MemoryInitialize(info);
2021-09-14 16:02:20 +00:00
TaskingInitialize();
2021-09-14 15:57:06 +00:00
HalInitialize();
luxInitrdInstall(info);
DriversInstall();
// Set up memory manager
Log("Console", "All ready. Starting console...\n\n");
ConsoleMain();
}