void kloader_cmain(struct mem_map_entry mem_map[], uint32_t mem_entry_count) { screen_init(); screen_cursor_hide(); terminal_init(); KINFO("Welcome to Nox (Bootloader mode)"); mem_mgr_init(mem_map, mem_entry_count); ata_init(); fs_init(); struct fat_part_info* part_info = fs_get_system_part(); struct fat_dir_entry kernel; if(!fat_get_dir_entry(part_info, "KERNEL ELF", &kernel)) { KPANIC("Failed to locate KERNEL.ELF"); while(1); } intptr_t kernel_entry_point; if(!elf_load_trusted("KERNEL ELF", &kernel_entry_point)) { KWARN("Failed to load elf!"); } kernel_entry cmain = (kernel_entry)(kernel_entry_point); cmain(mem_map, mem_entry_count); KINFO("Bootloader done"); while(1); }
void sdcallback(enum sd_event event) { uint8_t ret; DBG_INFO("[sd]: "); switch(event) { case sd_event_inserted: printf("card inserted\n"); break; case sd_event_inserted_wp: printf("card inserted (WP!)\n"); break; case sd_event_removed: printf("card removed\n"); break; case sd_event_initialized: printf("card initialized\n"); ret = partition_open(&partition,sd_read,0,0); fat_close(fatfs); fatfs = fat_open(&partition); fat_root = fat_get_dir_entry(fatfs, "/"); tftpd_init(fat_root); //httpd_chroot(fat_root); break; case sd_event_error: DBG_ERROR("error %x\n",sd_errno()); break; default: DBG_ERROR("unknown event\n"); break; } }