github.com/miolini/go@v0.0.0-20160405192216-fca68c8cb408/src/runtime/rt0_darwin_amd64.s (about) 1 // Copyright 2009 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 #include "textflag.h" 6 7 TEXT _rt0_amd64_darwin(SB),NOSPLIT,$-8 8 LEAQ 8(SP), SI // argv 9 MOVQ 0(SP), DI // argc 10 MOVQ $main(SB), AX 11 JMP AX 12 13 // When linking with -shared, this symbol is called when the shared library 14 // is loaded. 15 TEXT _rt0_amd64_darwin_lib(SB),NOSPLIT,$0x48 16 MOVQ BX, 0x18(SP) 17 MOVQ BP, 0x20(SP) 18 MOVQ R12, 0x28(SP) 19 MOVQ R13, 0x30(SP) 20 MOVQ R14, 0x38(SP) 21 MOVQ R15, 0x40(SP) 22 23 MOVQ DI, _rt0_amd64_darwin_lib_argc<>(SB) 24 MOVQ SI, _rt0_amd64_darwin_lib_argv<>(SB) 25 26 // Synchronous initialization. 27 MOVQ $runtime·libpreinit(SB), AX 28 CALL AX 29 30 // Create a new thread to do the runtime initialization and return. 31 MOVQ _cgo_sys_thread_create(SB), AX 32 TESTQ AX, AX 33 JZ nocgo 34 MOVQ $_rt0_amd64_darwin_lib_go(SB), DI 35 MOVQ $0, SI 36 CALL AX 37 JMP restore 38 39 nocgo: 40 MOVQ $8388608, 0(SP) // stacksize 41 MOVQ $_rt0_amd64_darwin_lib_go(SB), AX 42 MOVQ AX, 8(SP) // fn 43 MOVQ $0, 16(SP) // fnarg 44 MOVQ $runtime·newosproc0(SB), AX 45 CALL AX 46 47 restore: 48 MOVQ 0x18(SP), BX 49 MOVQ 0x20(SP), BP 50 MOVQ 0x28(SP), R12 51 MOVQ 0x30(SP), R13 52 MOVQ 0x38(SP), R14 53 MOVQ 0x40(SP), R15 54 RET 55 56 TEXT _rt0_amd64_darwin_lib_go(SB),NOSPLIT,$0 57 MOVQ _rt0_amd64_darwin_lib_argc<>(SB), DI 58 MOVQ _rt0_amd64_darwin_lib_argv<>(SB), SI 59 MOVQ $runtime·rt0_go(SB), AX 60 JMP AX 61 62 DATA _rt0_amd64_darwin_lib_argc<>(SB)/8, $0 63 GLOBL _rt0_amd64_darwin_lib_argc<>(SB),NOPTR, $8 64 DATA _rt0_amd64_darwin_lib_argv<>(SB)/8, $0 65 GLOBL _rt0_amd64_darwin_lib_argv<>(SB),NOPTR, $8 66 67 TEXT main(SB),NOSPLIT,$-8 68 MOVQ $runtime·rt0_go(SB), AX 69 JMP AX