github.com/peggyl/go@v0.0.0-20151008231540-ae315999c2d5/src/runtime/rt0_darwin_386.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_386_darwin(SB),NOSPLIT,$8
     8  	MOVL	8(SP), AX
     9  	LEAL	12(SP), BX
    10  	MOVL	AX, 0(SP)
    11  	MOVL	BX, 4(SP)
    12  	CALL	main(SB)
    13  	INT	$3
    14  
    15  // With -buildmode=c-archive, this symbol is called from a global constructor.
    16  TEXT _rt0_386_darwin_lib(SB),NOSPLIT,$0
    17  	PUSHL	BP
    18  	MOVL	SP, BP
    19  	PUSHL	BX
    20  	PUSHL	SI
    21  	PUSHL	DI
    22  
    23  	MOVL	8(BP), AX
    24  	MOVL	AX, _rt0_386_darwin_lib_argc<>(SB)
    25  	MOVL	12(BP), AX
    26  	MOVL	AX, _rt0_386_darwin_lib_argv<>(SB)
    27  
    28  	SUBL	$12, SP
    29  
    30  	// Create a new thread to do the runtime initialization and return.
    31  	MOVL	_cgo_sys_thread_create(SB), AX
    32  	TESTL	AX, AX
    33  	JZ	nocgo
    34  	MOVL	$_rt0_386_darwin_lib_go(SB), BX
    35  	MOVL	BX, 0(SP)
    36  	MOVL	$0, 4(SP)
    37  	CALL	AX
    38  	JMP     restore
    39  
    40  nocgo:
    41  	MOVL	$0x800000, 0(SP)               // stacksize = 8192KB
    42  	MOVL	$_rt0_386_darwin_lib_go(SB), AX
    43  	MOVL	AX, 4(SP)                      // fn
    44  	MOVL	$0, 8(SP)                      // fnarg
    45  	MOVL	$runtime·newosproc0(SB), AX
    46  	CALL	AX
    47  
    48  restore:
    49  	ADDL	$12, SP
    50  	POPL	DI
    51  	POPL	SI
    52  	POPL	BX
    53  	POPL	BP
    54  	RET
    55  
    56  TEXT _rt0_386_darwin_lib_go(SB),NOSPLIT,$12
    57  	MOVL	_rt0_386_darwin_lib_argc<>(SB), AX
    58  	MOVL	AX, 0(SP)
    59  	MOVL	_rt0_386_darwin_lib_argv<>(SB), AX
    60  	MOVL	AX, 4(SP)
    61  	MOVL	$runtime·rt0_go(SB), AX
    62  	CALL	AX
    63  	RET
    64  
    65  DATA _rt0_386_darwin_lib_argc<>(SB)/4, $0
    66  GLOBL _rt0_386_darwin_lib_argc<>(SB),NOPTR, $4
    67  DATA _rt0_386_darwin_lib_argv<>(SB)/4, $0
    68  GLOBL _rt0_386_darwin_lib_argv<>(SB),NOPTR, $4
    69  
    70  TEXT main(SB),NOSPLIT,$0
    71  	JMP	runtime·rt0_go(SB)