mirror of
https://github.com/drasko/codezero.git
synced 2026-01-12 02:43:15 +01:00
Various changes to incorporate new utcb setup.
Issues with l4_return value not reaching client side modified: libs/c/include/stdio.h modified: src/arch/arm/exception.c modified: src/glue/arm/init.c modified: tasks/fs0/src/task.c modified: tasks/libl4/include/l4lib/arch-arm/utcb.h modified: tasks/libl4/src/arm/syscalls.S modified: tasks/libl4/src/init.c deleted: tasks/libl4/tagfilelist modified: tasks/libposix/open.c modified: tasks/mm0/include/utcb.h modified: tasks/mm0/include/vm_area.h modified: tasks/mm0/main.c modified: tasks/mm0/src/init.c modified: tasks/mm0/src/task.c modified: tasks/mm0/src/utcb.c modified: tasks/mm0/src/vm_object.c
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
#include <l4/generic/tcb.h>
|
||||
#include <l4/lib/printk.h>
|
||||
#include <l4/api/ipc.h>
|
||||
#include <l4/api/kip.h>
|
||||
#include <l4/api/errno.h>
|
||||
#include INC_PLAT(printascii.h)
|
||||
#include INC_ARCH(exception.h)
|
||||
@@ -17,7 +18,7 @@
|
||||
#include INC_SUBARCH(mm.h)
|
||||
|
||||
/* Abort debugging conditions */
|
||||
// #define DEBUG_ABORTS
|
||||
//#define DEBUG_ABORTS
|
||||
#if defined (DEBUG_ABORTS)
|
||||
#define dbg_abort(...) dprintk(__VA_ARGS__)
|
||||
#else
|
||||
@@ -180,7 +181,15 @@ int check_aborts(u32 faulted_pc, u32 fsr, u32 far)
|
||||
void data_abort_handler(u32 faulted_pc, u32 fsr, u32 far)
|
||||
{
|
||||
set_abort_type(fsr, ARM_DABT);
|
||||
|
||||
/*
|
||||
* FIXME: Find why if we use a clause like if tid == PAGER_TID
|
||||
* this prints just the faulted_pc but not the text "Data abort @ PC:"
|
||||
* Strange.
|
||||
*/
|
||||
dbg_abort("Data abort @ PC: ", faulted_pc);
|
||||
|
||||
/* Check for more details */
|
||||
if (check_aborts(faulted_pc, fsr, far) < 0) {
|
||||
printascii("This abort can't be handled by any pager.\n");
|
||||
goto error;
|
||||
|
||||
@@ -182,10 +182,10 @@ void kip_init()
|
||||
|
||||
kip_init_syscalls();
|
||||
|
||||
/* KIP + 0xFF0 is pointer to UTCB area for this thread group. */
|
||||
/* KIP + 0xFF0 is pointer to UTCB segment start address */
|
||||
utcb_ref = (struct utcb **)((unsigned long)&kip + UTCB_KIP_OFFSET);
|
||||
|
||||
/* All thread groups have their utcb mapped at UTCB_AREA_START */
|
||||
/* All thread utcbs are allocated starting from UTCB_AREA_START */
|
||||
*utcb_ref = (struct utcb *)UTCB_AREA_START;
|
||||
|
||||
add_mapping(virt_to_phys(&kip), USER_KIP_PAGE, PAGE_SIZE,
|
||||
|
||||
Reference in New Issue
Block a user