34 lines
678 B
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);
|
|
}
|