From 418b39d436ceda146bbbced0bd716bff2f8371e2 Mon Sep 17 00:00:00 2001 From: Alex Brainman Date: Thu, 10 Jul 2014 14:23:50 +1000 Subject: [PATCH] runtime: align stack before calling windows in usleep2 Fixes #8174. LGTM=minux R=golang-codereviews, minux CC=golang-codereviews https://golang.org/cl/102360043 --- src/pkg/runtime/sys_windows_amd64.s | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pkg/runtime/sys_windows_amd64.s b/src/pkg/runtime/sys_windows_amd64.s index 72b905ef79..6dc13e293d 100644 --- a/src/pkg/runtime/sys_windows_amd64.s +++ b/src/pkg/runtime/sys_windows_amd64.s @@ -367,7 +367,10 @@ usleep1_ret: RET // Runs on OS stack. duration (in 100ns units) is in BX. -TEXT runtime·usleep2(SB),NOSPLIT,$8 +TEXT runtime·usleep2(SB),NOSPLIT,$16 + MOVQ SP, AX + ANDQ $~15, SP // alignment as per Windows requirement + MOVQ AX, 8(SP) // Want negative 100ns units. NEGQ BX MOVQ SP, R8 // ptime @@ -376,4 +379,5 @@ TEXT runtime·usleep2(SB),NOSPLIT,$8 MOVQ $0, DX // alertable MOVQ runtime·NtWaitForSingleObject(SB), AX CALL AX + MOVQ 8(SP), SP RET