Implemented app_main

This commit is contained in:
Sparchatus 2022-04-27 09:13:29 +00:00
parent b66f20ae24
commit 81018ac2fd
3 changed files with 37 additions and 1 deletions

View File

@ -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); 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; 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); 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); 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; 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); err = load_elf_binary((genvaddr_t) cpudriver_elf_addr, &cpudriver_mem_info, arch_init_sym->st_value, &reloc_cpudriver_entry);

View File

@ -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"); // debug_printf("DEBUG rueegges: pt_ensure_slabs - refilling pt_slab DONE\n");
if(err_is_fail(err)) { if(err_is_fail(err)) {
DEBUG_PRINTF("pt_slabs refill failed\n");
return err_push(err, LIB_ERR_SLAB_REFILL); 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"); // debug_printf("DEBUG rueegges: pt_ensure_slabs - refilling pt_children_slabs DONE\n");
if(err_is_fail(err)) { if(err_is_fail(err)) {
DEBUG_PRINTF("pt_children_slabs refill failed\n");
return err_push(err, LIB_ERR_SLAB_REFILL); return err_push(err, LIB_ERR_SLAB_REFILL);
} }
} }

View File

@ -69,6 +69,7 @@ bsp_main(int argc, char *argv[]) {
struct frame_identity urpc_frame_id; struct frame_identity urpc_frame_id;
err = frame_identify(urpc_frame, &urpc_frame_id); err = frame_identify(urpc_frame, &urpc_frame_id);
if(err_is_fail(err)) return err_push(err, LIB_ERR_CAP_IDENTIFY); if(err_is_fail(err)) return err_push(err, LIB_ERR_CAP_IDENTIFY);
// boot second core // boot second core
char *cpu_driver_name; char *cpu_driver_name;
switch (platform_info.platform) { switch (platform_info.platform) {
@ -108,12 +109,43 @@ bsp_main(int argc, char *argv[]) {
static int static int
app_main(int argc, char *argv[]) { app_main(int argc, char *argv[]) {
errval_t err;
debug_printf("[app_main]\n");
// Implement me in Milestone 5 // Implement me in Milestone 5
// Remember to call // Remember to call
// - grading_setup_app_init(..); // - grading_setup_app_init(..);
// - grading_test_early(); // - grading_test_early();
// - grading_test_late(); // - 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[]) int main(int argc, char *argv[])