]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: align stack before calling windows in usleep2
authorAlex Brainman <alex.brainman@gmail.com>
Thu, 10 Jul 2014 04:23:50 +0000 (14:23 +1000)
committerAlex Brainman <alex.brainman@gmail.com>
Thu, 10 Jul 2014 04:23:50 +0000 (14:23 +1000)
Fixes #8174.

LGTM=minux
R=golang-codereviews, minux
CC=golang-codereviews
https://golang.org/cl/102360043

src/pkg/runtime/sys_windows_amd64.s

index 72b905ef7982d22c856b91aab06b4031f357cd50..6dc13e293d8771f72012e2d00de16dc5398643ac 100644 (file)
@@ -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