#include #include #include #include #include #include #include #include #include #include #include #include #include #include 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) { _init(dtb); run_thread(run_process_by_name, (uint64_t)&"syscall.img"); schedule(); }