From: Russ Cox Date: Wed, 27 Aug 2014 18:52:25 +0000 (-0400) Subject: runtime: fix solaris build X-Git-Tag: go1.4beta1~677 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=997809c809d9bb1016947d9e0bed7d4753496eeb;p=gostls13.git runtime: fix solaris build nanotime1 is not a Go function and must not store its result at 0(FP). That overwrites some data owned by the caller. TBR=aram CC=golang-codereviews https://golang.org/cl/138730043 --- diff --git a/src/pkg/runtime/sys_solaris_amd64.s b/src/pkg/runtime/sys_solaris_amd64.s index 60447d3499..8506e9939a 100644 --- a/src/pkg/runtime/sys_solaris_amd64.s +++ b/src/pkg/runtime/sys_solaris_amd64.s @@ -18,6 +18,7 @@ TEXT runtime·settls(SB),NOSPLIT,$8 // Set the TLS errno pointer in M. // // Called using runtime·asmcgocall from os_solaris.c:/minit. +// NOT USING GO CALLING CONVENTION. TEXT runtime·miniterrno(SB),NOSPLIT,$0 // asmcgocall will put first argument into DI. CALL DI // SysV ABI so returns in AX @@ -33,6 +34,7 @@ TEXT runtime·miniterrno(SB),NOSPLIT,$0 // runtime·nanotime stack. // // Called using runtime·sysvicall6 from os_solaris.c:/nanotime. +// NOT USING GO CALLING CONVENTION. TEXT runtime·nanotime1(SB),NOSPLIT,$0 // need space for the timespec argument. SUBQ $64, SP // 16 bytes will do, but who knows in the future? @@ -44,10 +46,10 @@ TEXT runtime·nanotime1(SB),NOSPLIT,$0 IMULQ $1000000000, AX // multiply into nanoseconds ADDQ 8(SP), AX // tv_nsec, offset should be stable. ADDQ $64, SP - MOVQ AX, ret+0(FP) RET // pipe(3c) wrapper that returns fds in AX, DX. +// NOT USING GO CALLING CONVENTION. TEXT runtime·pipe1(SB),NOSPLIT,$0 SUBQ $16, SP // 8 bytes will do, but stack has to be 16-byte alligned MOVQ SP, DI @@ -67,6 +69,7 @@ TEXT runtime·pipe1(SB),NOSPLIT,$0 // section 3.2.3. // // Called by runtime·asmcgocall or runtime·cgocall. +// NOT USING GO CALLING CONVENTION. TEXT runtime·asmsysvicall6(SB),NOSPLIT,$0 // asmcgocall will put first argument into DI. PUSHQ DI // save for later