From: Cyrus H. <sl...@us...> - 2006-03-25 19:56:48
|
Update of /cvsroot/sbcl/sbcl/src/runtime In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9016 Modified Files: Tag: lutex-branch bsd-os.c Log Message: 0.9.10.46.lutex-branch.10 * Set the %fs register to 0 before freeing the ldt or really bad things happen * Fix #ifdef in darwin-os.c LISP_FEATURE_CARBON_THREADS -> LISP_FEATURE_CARBON_SEMAPHORES Index: bsd-os.c =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/bsd-os.c,v retrieving revision 1.38.2.3 retrieving revision 1.38.2.4 diff -u -d -r1.38.2.3 -r1.38.2.4 --- bsd-os.c 25 Mar 2006 16:18:53 -0000 1.38.2.3 +++ bsd-os.c 25 Mar 2006 19:56:46 -0000 1.38.2.4 @@ -396,19 +396,13 @@ int arch_os_thread_cleanup(struct thread *thread) { #if defined(LISP_FEATURE_X86) && defined(LISP_FEATURE_DARWIN) && defined(LISP_FEATURE_SB_THREAD) - sel_t sel; int n = thread->tls_cookie; - data_desc_t ldt_entry = { 0, 0, 0, DESC_DATA_WRITE, - 0, 0, 0, DESC_DATA_32B, DESC_GRAN_BYTE, 0 }; - - n = i386_set_ldt(n, NULL, 1); - - /* - sel.index = n; - sel.rpl = USER_PRIV; - sel.ti = SEL_LDT; - __asm__ __volatile__ ("mov %0, %%fs" : : "r"(sel)); - */ + + /* Set the %%fs register back to 0 and free the the ldt + * by setting it to NULL. + */ + __asm__ __volatile__ ("mov %0, %%fs" : : "r"(0)); + i386_set_ldt(n, NULL, 1); #endif return 1; /* success */ |