hos/src/kernel_main.c

34 lines
678 B
C

#include <stdint.h>
#include "fb.h"
static uint32_t * process_mbinfo_tag(uint32_t * mbinfo)
{
uint32_t type = mbinfo[0];
uint32_t size = mbinfo[1];
switch (type)
{
case 0u:
return 0u;
case 8u:
fb_init((uint32_t *)mbinfo[2], mbinfo[5], mbinfo[6], mbinfo[4]);
break;
}
return (uint32_t *)(((uint32_t)mbinfo + size + 7u) & 0xFFFFFFF8u);
}
static void process_mbinfo(uint32_t * mbinfo)
{
/* Skip multiboot2 boot information header. */
mbinfo += 2u;
do
{
mbinfo = process_mbinfo_tag(mbinfo);
} while (mbinfo != (uint32_t *)0u);
}
void hos_main(uint32_t * mbinfo)
{
process_mbinfo(mbinfo);
}