diff --git a/lib/aos/coreboot.c b/lib/aos/coreboot.c index f493232..adbfd2d 100644 --- a/lib/aos/coreboot.c +++ b/lib/aos/coreboot.c @@ -290,6 +290,7 @@ errval_t coreboot(coreid_t mpid, }; struct Elf64_Sym * boot_entry_psci_sym = elf64_find_symbol_by_name((genvaddr_t) bootdriver_elf_addr, bootdriver_elf_frame_id.bytes, "boot_entry_psci", false, STT_FUNC, 0); + assert(boot_entry_psci_sym != NULL); genvaddr_t reloc_bootdriver_entry; err = load_elf_binary((genvaddr_t) bootdriver_elf_addr, &bootdriver_mem_info, boot_entry_psci_sym->st_value, &reloc_bootdriver_entry); @@ -304,6 +305,7 @@ errval_t coreboot(coreid_t mpid, }; struct Elf64_Sym * arch_init_sym = elf64_find_symbol_by_name((genvaddr_t) cpudriver_elf_addr, cpudriver_elf_frame_id.bytes, "arch_init", false, STT_FUNC, 0); + assert(arch_init_sym != NULL); genvaddr_t reloc_cpudriver_entry; err = load_elf_binary((genvaddr_t) cpudriver_elf_addr, &cpudriver_mem_info, arch_init_sym->st_value, &reloc_cpudriver_entry); diff --git a/lib/aos/paging.c b/lib/aos/paging.c index 316e62e..ebc0ac7 100644 --- a/lib/aos/paging.c +++ b/lib/aos/paging.c @@ -287,6 +287,7 @@ static errval_t pt_ensure_slabs(struct paging_state *st) { // debug_printf("DEBUG rueegges: pt_ensure_slabs - refilling pt_slab DONE\n"); if(err_is_fail(err)) { + DEBUG_PRINTF("pt_slabs refill failed\n"); return err_push(err, LIB_ERR_SLAB_REFILL); } } @@ -303,6 +304,7 @@ static errval_t pt_ensure_slabs(struct paging_state *st) { // debug_printf("DEBUG rueegges: pt_ensure_slabs - refilling pt_children_slabs DONE\n"); if(err_is_fail(err)) { + DEBUG_PRINTF("pt_children_slabs refill failed\n"); return err_push(err, LIB_ERR_SLAB_REFILL); } } diff --git a/usr/init/main.c b/usr/init/main.c index 8903453..d84bb8b 100644 --- a/usr/init/main.c +++ b/usr/init/main.c @@ -69,6 +69,7 @@ bsp_main(int argc, char *argv[]) { struct frame_identity urpc_frame_id; err = frame_identify(urpc_frame, &urpc_frame_id); if(err_is_fail(err)) return err_push(err, LIB_ERR_CAP_IDENTIFY); + // boot second core char *cpu_driver_name; switch (platform_info.platform) { @@ -108,12 +109,43 @@ bsp_main(int argc, char *argv[]) { static int app_main(int argc, char *argv[]) { + errval_t err; + + debug_printf("[app_main]\n"); + // Implement me in Milestone 5 // Remember to call // - grading_setup_app_init(..); // - grading_test_early(); // - grading_test_late(); - return LIB_ERR_NOT_IMPLEMENTED; + + // TODO: get the bootinfo + bi = NULL; + + // Grading + grading_setup_app_init(bi); + + // TODO: initialize mem allocator, vspace management here + + // Grading + grading_test_early(); + + // TODO: Spawn system processes etc. here + // Grading + grading_test_late(); + + debug_printf("Message handler loop\n"); + // Hang around + struct waitset *default_ws = get_default_waitset(); + while (true) { + err = event_dispatch(default_ws); + if (err_is_fail(err)) { + DEBUG_ERR(err, "in event_dispatch"); + abort(); + } + } + + return EXIT_SUCCESS; } int main(int argc, char *argv[])