X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fruntime%2Fx86-assem.S;h=fba970ba1a3beb9c5233da8dcd5860e2f8f1b45b;hb=HEAD;hp=4987db67f87c04cebd38e307940031ca24f591a9;hpb=1dd3616e9eadaba9f1ca86b72d64551fbd75f399;p=sbcl.git diff --git a/src/runtime/x86-assem.S b/src/runtime/x86-assem.S index 4987db6..fba970b 100644 --- a/src/runtime/x86-assem.S +++ b/src/runtime/x86-assem.S @@ -87,10 +87,10 @@ * |XXXXXXXX| e4e * TLS ends here> ,- |XXXXXXXX| e4f = TEB_STATIC_TLS_SLOTS_OFFSET+63 * / z z - * | ---------- - * | - * | big blob of SBCL-specific thread-local data - * | |----------------------------------------| + * | ---------- "os_address" ----. + * | | + * | big blob of SBCL-specific thread-local data | + * | |----------------------------------------| <--' * | | CONTROL, BINDING, ALIEN STACK | * | z z * ================== | |----------------------------------------| @@ -424,8 +424,13 @@ Ldone: #ifdef LISP_FEATURE_WIN32 /* Establish an SEH frame. */ #ifdef LISP_FEATURE_SB_THREAD - /* FIXME: need to save BSP here. */ -#error "need to save BSP here, but don't know how yet." + /* Save binding stack pointer */ + subl $4, %esp + pushl %eax + movl SBCL_THREAD_BASE_EA, %eax + movl THREAD_BINDING_STACK_POINTER_OFFSET(%eax), %eax + movl %eax, 4(%esp) + popl %eax #else pushl BINDING_STACK_POINTER + SYMBOL_VALUE_OFFSET #endif @@ -451,6 +456,7 @@ LsingleValue: #ifdef LISP_FEATURE_WIN32 /* Remove our SEH frame. */ + mov %fs:0,%esp popl %fs:0 add $8, %esp #endif @@ -934,12 +940,6 @@ GNAME(fast_bzero_pointer): * to fast_bzero_detect if OS supports SSE. */ .long GNAME(fast_bzero_base) - .globl GNAME(gc_safepoint_page) - .data - .align align_page -GNAME(gc_safepoint_page): - .fill BACKEND_PAGE_BYTES,1,0 - .text .align align_16byte,0x90 .globl GNAME(fast_bzero)