Implemented app_main
This commit is contained in:
parent
b66f20ae24
commit
81018ac2fd
@ -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);
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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[])
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user