From b8a2f5eb1724f9025cb4e34b7dd42351bb4f2cef Mon Sep 17 00:00:00 2001 From: "Neal H. Walfield" Date: Wed, 12 Dec 2007 23:32:52 +0000 Subject: hurd/ 2007-12-13 Neal H. Walfield * exceptions.h (exception_page_cleanup): New declaration. libhurd-mm/ 2007-12-13 Neal H. Walfield * exceptions.c (exception_frame_alloc): When allocating the first frame, set EXCEPTION_PAGE->EXCEPTION_STACK_BOTTOM. (exception_page_cleanup): New function. * ia32-exception-entry.S (_exception_handler_end): Correctly adjust the exception page's exception stack. libpthread/ 2007-12-13 Neal H. Walfield * sysdeps/l4/hurd/pt-thread-halt.c: Include . (__pthread_thread_halt): Call exception_page_cleanup. --- sysdeps/l4/hurd/pt-thread-halt.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'sysdeps') diff --git a/sysdeps/l4/hurd/pt-thread-halt.c b/sysdeps/l4/hurd/pt-thread-halt.c index 4aa112b..1e9a8ee 100644 --- a/sysdeps/l4/hurd/pt-thread-halt.c +++ b/sysdeps/l4/hurd/pt-thread-halt.c @@ -22,6 +22,8 @@ #include +#include + /* If we try to deallocate our self, we will end up causing a deadlock. Thus, when a thread tries to free itself, we add it here. The next thread to free a thread will free it. */ @@ -48,6 +50,8 @@ __pthread_thread_halt (struct __pthread *thread, int need_dealloc) /* Free the exception page. */ assert (! ADDR_IS_VOID (exception_page.addr)); + exception_page_cleanup (ADDR_TO_PTR (addr_extend (exception_page.addr, + 0, PAGESIZE_LOG2))); storage_free (exception_page.addr, false); if (tid == l4_myself ()) -- cgit v1.2.3