github.com/q45/go@v0.0.0-20151101211701-a4fb8c13db3f/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)