diff --git a/SConstruct b/SConstruct index d1ddb91..8982459 100644 --- a/SConstruct +++ b/SConstruct @@ -41,3 +41,4 @@ objects += SConscript('src/api/SConscript', exports = {'symbols' : all_syms, 'en kernel_elf = env.Program(BUILDDIR + '/kernel.elf', objects) Alias('kernel', kernel_elf) +Depends(kernel_elf, 'include/l4/config.h') diff --git a/conts/libl4/include/l4lib/arch-arm/syslib.h b/conts/libl4/include/l4lib/arch-arm/syslib.h index 5811499..dc52b7a 100644 --- a/conts/libl4/include/l4lib/arch-arm/syslib.h +++ b/conts/libl4/include/l4lib/arch-arm/syslib.h @@ -305,9 +305,6 @@ static inline void *l4_map_helper(void *phys, int npages) struct task_ids ids; void *virt = l4_new_virtual(npages); - if (!phys) - BUG(); - l4_getid(&ids); l4_map(phys, virt, npages, MAP_USR_RW_FLAGS, ids.tid); return virt; diff --git a/src/arch/arm/exception.c b/src/arch/arm/exception.c index fc1866f..778e73c 100644 --- a/src/arch/arm/exception.c +++ b/src/arch/arm/exception.c @@ -111,8 +111,8 @@ void fault_ipc_to_pager(u32 faulty_pc, u32 fsr, u32 far) /* Detect if a pager is self-faulting */ if (current->tid == current->pagerid) { - printk("Pager (%d) self-faulting. Exiting.\n", - current->tid); + printk("Pager (%d) faulted on itself. FAR: 0x%x, PC: 0x%x Exiting.\n", + current->tid, fault->far, fault->faulty_pc); task_destroy_current(); } diff --git a/src/generic/container.c b/src/generic/container.c index 9d88c1b..4e7fd15 100644 --- a/src/generic/container.c +++ b/src/generic/container.c @@ -169,16 +169,16 @@ int init_first_pager(struct pager *pager, task->container = cont; task->cap_list_ptr = &pager->cap_list; - /* Map the task's space */ - add_mapping_pgd(pager->start_lma, pager->start_vma, - page_align_up(pager->memsize), - MAP_USR_DEFAULT_FLAGS, TASK_PGD(task)); - printk("%s: Mapping %lu pages from 0x%lx to 0x%lx for %s\n", __KERNELNAME__, __pfn(page_align_up(pager->memsize)), pager->start_lma, pager->start_vma, cont->name); + /* Map the task's space */ + add_mapping_pgd(pager->start_lma, pager->start_vma, + page_align_up(pager->memsize), + MAP_USR_DEFAULT_FLAGS, TASK_PGD(task)); + /* Initialize task scheduler parameters */ sched_init_task(task, TASK_PRIO_PAGER); @@ -228,14 +228,15 @@ int init_pager(struct pager *pager, struct container *cont) task->pagerid = task->tid; task->cap_list_ptr = &pager->cap_list; - add_mapping_pgd(pager->start_lma, pager->start_vma, - page_align_up(pager->memsize), - MAP_USR_DEFAULT_FLAGS, TASK_PGD(task)); printk("%s: Mapping %lu pages from 0x%lx to 0x%lx for %s\n", __KERNELNAME__, __pfn(page_align_up(pager->memsize)), pager->start_lma, pager->start_vma, cont->name); + add_mapping_pgd(pager->start_lma, pager->start_vma, + page_align_up(pager->memsize), + MAP_USR_DEFAULT_FLAGS, TASK_PGD(task)); + /* Initialize task scheduler parameters */ sched_init_task(task, TASK_PRIO_PAGER);