From: Russ Cox Date: Tue, 9 Sep 2014 21:12:05 +0000 (-0400) Subject: runtime: fix windows/386 build X-Git-Tag: go1.4beta1~454 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=ee6c6d96b652cb7003bdb705dcfa617e04777b3d;p=gostls13.git runtime: fix windows/386 build The difference between the old and the new (from earlier) code is that we set stackguard = stack.lo + StackGuard, while the old code set stackguard = stack.lo. That 512 bytes appears to be the difference between the profileloop function running and not running. We don't know how big the system stack is, but it is likely MUCH bigger than 4k. Give Go/C 8k. TBR=iant CC=golang-codereviews https://golang.org/cl/140440044 --- diff --git a/src/runtime/memclr_386.s b/src/runtime/memclr_386.s index 8b163923e9..1520aea2e0 100644 --- a/src/runtime/memclr_386.s +++ b/src/runtime/memclr_386.s @@ -6,6 +6,8 @@ #include "textflag.h" +// NOTE: Windows externalthreadhandler expects memclr to preserve DX. + // void runtime·memclr(void*, uintptr) TEXT runtime·memclr(SB), NOSPLIT, $0-8 MOVL ptr+0(FP), DI diff --git a/src/runtime/memclr_amd64.s b/src/runtime/memclr_amd64.s index 35b3b4beef..94a2c7f236 100644 --- a/src/runtime/memclr_amd64.s +++ b/src/runtime/memclr_amd64.s @@ -6,6 +6,8 @@ #include "textflag.h" +// NOTE: Windows externalthreadhandler expects memclr to preserve DX. + // void runtime·memclr(void*, uintptr) TEXT runtime·memclr(SB), NOSPLIT, $0-16 MOVQ ptr+0(FP), DI diff --git a/src/runtime/sys_windows_386.s b/src/runtime/sys_windows_386.s index ebcfdf4e0d..9b1fc7a205 100644 --- a/src/runtime/sys_windows_386.s +++ b/src/runtime/sys_windows_386.s @@ -191,7 +191,7 @@ TEXT runtime·externalthreadhandler(SB),NOSPLIT,$0 CALL runtime·memclr(SB) // smashes AX,BX,CX LEAL g_end(SP), BX MOVL BX, g_m(SP) - LEAL -4096(SP), CX + LEAL -8192(SP), CX MOVL CX, (g_stack+stack_lo)(SP) ADDL $const_StackGuard, CX MOVL CX, g_stackguard0(SP)