From: Cyrus H. <sl...@us...> - 2006-03-22 23:41:57
|
Update of /cvsroot/sbcl/sbcl/src/runtime In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22178 Modified Files: Tag: lutex-branch x86-darwin-os.h Log Message: 0.9.10.46.lutex-branch.4 * Fix OOAO violations of restoring the segment register. Add os_restore_tls_segment_register inline function and call where appropriate. * Sprinkle in some more calls to restore %fs * Some #ifdefs to make sure things don't get included twice * install interrupt_thread_handler and sig_stop_for_gc_handlers * use sel_t to specify bitfields for ldt struct instead of doing this by hand * add some debugging noise Index: x86-darwin-os.h =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/runtime/x86-darwin-os.h,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -d -r1.1.2.1 -r1.1.2.2 --- x86-darwin-os.h 21 Mar 2006 19:28:15 -0000 1.1.2.1 +++ x86-darwin-os.h 22 Mar 2006 23:41:53 -0000 1.1.2.2 @@ -4,14 +4,21 @@ #include <architecture/i386/table.h> #include <i386/user_ldt.h> +#include "darwin-os.h" + static inline os_context_t *arch_os_get_context(void **void_context) { return (os_context_t *) *void_context; } -void set_data_desc_size(data_desc_t* desc, unsigned int size); +void set_data_desc_size(data_desc_t* desc, unsigned long size); void set_data_desc_addr(data_desc_t* desc, void* addr); #define CONTEXT_ADDR_FROM_STEM(stem) &context->uc_mcontext->ss.stem #define DARWIN_FIX_CONTEXT(context) +static inline void os_restore_tls_segment_register(os_context_t *context) { + __asm__ __volatile__ ("movw %w0, %%fs" : : "q" + (*CONTEXT_ADDR_FROM_STEM(fs))); +} + #endif /* _X86_DARWIN_OS_H */ |