54 lines
898 B
C
54 lines
898 B
C
#include <logger.h>
|
|
#include <process.h>
|
|
#include <thread.h>
|
|
#include <kmalloc.h>
|
|
#include <uart.h>
|
|
#include <dtb.h>
|
|
#include <initrd.h>
|
|
#include <mman.h>
|
|
#include <vector.h>
|
|
#include <utils.h>
|
|
#include <timer.h>
|
|
#include <exception.h>
|
|
#include <interrupt.h>
|
|
#include <mbox.h>
|
|
|
|
static inline
|
|
void _init(void *dtb)
|
|
{
|
|
exception_init();
|
|
|
|
uart_init();
|
|
|
|
// Device tree
|
|
DEBUG_DTB(dtb);
|
|
dtb_start = dtb;
|
|
vector_t *dtb_struct_cbs = make_vector(0);
|
|
VEC_PUSH(dtb_struct_cbs, &initrd_dtb_cb);
|
|
VEC_PUSH(dtb_struct_cbs, &mman_dtb_memory_cb);
|
|
fdt_traverse(dtb_struct_cbs);
|
|
DEBUG_DTB("device tree parse done");
|
|
|
|
initrd_init();
|
|
|
|
mman_init();
|
|
|
|
thread_init();
|
|
|
|
timer_init();
|
|
|
|
enable_interrupt();
|
|
}
|
|
|
|
void main(void *dtb)
|
|
{
|
|
INFOR("kernel running");
|
|
|
|
_init(dtb);
|
|
|
|
INFOR("Run user process syscall.img");
|
|
run_thread(run_process_by_name, (uint64_t)&"syscall.img");
|
|
|
|
schedule();
|
|
}
|