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