#include #include #include #include #include #include #include #include #include void init(void *dtb, file_node_t **initrd_root) { // UART uart_init(); // Device tree INFOR(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("device tree parse done"); // Initramfs INFOR(initrd_start); *initrd_root = initrd_init(); // Memory (Buddy system) mman_init(); } void main(void *dtb) { file_node_t *initrd_root = 0x0; init(dtb, &initrd_root); uint64_t el; R_SYSREG(el, CurrentEL); INFOR(el); void *page1 = allocate_page(1); INFOR(page1); void *page2 = allocate_page(2); INFOR(page2); void *page4 = allocate_page(4); INFOR(page4); void *page16 = allocate_page(16); INFOR(page16); free_page(page1); free_page(page2); free_page(page4); free_page(page16); void *page32 = allocate_page(32); INFOR(page32); page1 = allocate_page(1); INFOR(page1); free_page(page1); void *kmalloc8 = kmalloc(8); INFOR(kmalloc8); kfree(kmalloc8); kmalloc8 = kmalloc(8); INFOR(kmalloc8); kfree(kmalloc8); void *kmalloc7k = kmalloc(7 * (1 << 10)); INFOR(kmalloc7k); void *kmalloc8k = kmalloc(1 << 13); INFOR(kmalloc8k); kfree(kmalloc7k); kfree(kmalloc8k); page1 = allocate_page(1); INFOR(page1); int shell_cont = 1; while (shell_cont) { shell_cont = shell(initrd_root); } }