summaryrefslogtreecommitdiff
path: root/libhurd-mm/exceptions.c
diff options
context:
space:
mode:
authorneal <neal>2007-11-23 13:39:36 +0000
committerneal <neal>2007-11-23 13:39:36 +0000
commit063d8339dfe16b6035375a00f3a6313f2dff083c (patch)
tree6e37ef358183bf00e277da95f46f2586f597bd64 /libhurd-mm/exceptions.c
parent2b62e6480aaa4c3dcb73f45fa4977d6b2e7de080 (diff)
/
2007-11-23 Neal H. Walfield <neal@gnu.org> * README: Add note that Pistachio must be compiled with the Pager ExchangeRegisters configure option enabled. hurd/ 2007-11-23 Neal H. Walfield <neal@gnu.org> * thread.h: Include <hurd/addr-trans.h>. (HURD_EXREGS_EXCEPTION_THREAD): New definition. (trans_exregs): Take two additional arguments for determining how to copy the aspace address translation bits. Update callers. (thread_stop): New function. * rpc.h (RPC12_4): New macro. (RPC13_4): Likewise. * exceptions.h (exception_handler_init): New declaration. (exception_handler_loop): Likewise. libhurd-mm/ 2007-11-23 Neal H. Walfield <neal@gnu.org> * exceptions.c (exception_thread): Rename from this... (exception_handler_loop): ... to this. Update caller. * Makefile.am (libhurd_mm_a_SOURCES): Remove exceptions.h. * exceptions.h: Remove file. viengoos/ 2007-11-23 Neal H. Walfield <neal@gnu.org> * thread.h (thread_exregs): Take two additional arguments, a cap_addr_trans structure and a corresponding flags. Update users. * thread.c (thread_commission): Don't start thread THREAD. (control_to_string): New function. (thread_exregs): Take two additional arguments, a cap_addr_trans structure and a corresponding flags. Use them when copying a supplied capability into the address space slot of the thread. Support the HURD_EXREGS_EXCEPTION_THREAD flag. Improve error detection and debugging out. * server.c (server_loop): Let a void address for the activity slot imply the caller's current activity. Take two additional arguments, a cap_addr_trans structure and a corresponding flags argument. Pass them to thread_exregs. * viengoos.c (system_task_load): Set THREAD_ACTIVITY. Don't call thread_commission. Instead, call thread_exregs. ruth/ 2007-11-23 Neal H. Walfield <neal@gnu.org> * ruth.c (main): Don't call rm_object_slot_copy_in to update the address space slot. Just use rm_thread_exregs. Add test for pthread library. * ia32-cmain.c (cmain): If _pthread_init_routine is not NULL, call it. Otherwise, just call finish directly.
Diffstat (limited to 'libhurd-mm/exceptions.c')
-rw-r--r--libhurd-mm/exceptions.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/libhurd-mm/exceptions.c b/libhurd-mm/exceptions.c
index ee0fcf3..94f46c2 100644
--- a/libhurd-mm/exceptions.c
+++ b/libhurd-mm/exceptions.c
@@ -66,8 +66,8 @@ extern struct hurd_startup_data *__hurd_startup_data;
} \
})
-static void
-exception_thread (void)
+void
+exception_handler_loop (void)
{
debug (5, "Exception thread launched (0x%x.%x)",
l4_thread_no (l4_myself ()), l4_version (l4_myself ()));
@@ -121,15 +121,16 @@ exception_thread (void)
}
}
-static char stack[2 * PAGESIZE] __attribute__ ((aligned(PAGESIZE)));
+#define STACK_SIZE (2 * PAGESIZE)
+static char stack[STACK_SIZE] __attribute__ ((aligned(PAGESIZE)));
void
exception_handler_init (void)
{
/* XXX: This only works for architectures on which the stack grows
downward. */
- void *sp = stack + sizeof (stack);
+ char *sp = (char *) stack + STACK_SIZE;
l4_thread_id_t tid = hurd_exception_thread (l4_myself ());
- l4_start_sp_ip (tid, (l4_word_t) sp, (l4_word_t) &exception_thread);
+ l4_start_sp_ip (tid, (l4_word_t) sp, (l4_word_t) &exception_handler_loop);
}