| // Copyright 2009 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| #include "textflag.h" |
| |
| TEXT _rt0_386_linux(SB),NOSPLIT,$8 |
| MOVL 8(SP), AX |
| LEAL 12(SP), BX |
| MOVL AX, 0(SP) |
| MOVL BX, 4(SP) |
| CALL main(SB) |
| INT $3 |
| |
| // When building with -buildmode=c-shared, this symbol is called when the shared |
| // library is loaded. |
| TEXT _rt0_386_linux_lib(SB),NOSPLIT,$0 |
| PUSHL BP |
| MOVL SP, BP |
| PUSHL BX |
| PUSHL SI |
| PUSHL DI |
| |
| MOVL 8(BP), AX |
| MOVL AX, _rt0_386_linux_lib_argc<>(SB) |
| MOVL 12(BP), AX |
| MOVL AX, _rt0_386_linux_lib_argv<>(SB) |
| |
| // Synchronous initialization. |
| MOVL $runtime·libpreinit(SB), AX |
| CALL AX |
| |
| SUBL $8, SP |
| |
| // Create a new thread to do the runtime initialization. |
| MOVL _cgo_sys_thread_create(SB), AX |
| TESTL AX, AX |
| JZ nocgo |
| MOVL $_rt0_386_linux_lib_go(SB), BX |
| MOVL BX, 0(SP) |
| MOVL $0, 4(SP) |
| CALL AX |
| JMP restore |
| |
| nocgo: |
| MOVL $0x800000, 0(SP) // stacksize = 8192KB |
| MOVL $_rt0_386_linux_lib_go(SB), AX |
| MOVL AX, 4(SP) // fn |
| MOVL $runtime·newosproc0(SB), AX |
| CALL AX |
| |
| restore: |
| ADDL $8, SP |
| POPL DI |
| POPL SI |
| POPL BX |
| POPL BP |
| RET |
| |
| TEXT _rt0_386_linux_lib_go(SB),NOSPLIT,$12 |
| MOVL _rt0_386_linux_lib_argc<>(SB), AX |
| MOVL AX, 0(SP) |
| MOVL _rt0_386_linux_lib_argv<>(SB), AX |
| MOVL AX, 4(SP) |
| MOVL $runtime·rt0_go(SB), AX |
| CALL AX |
| RET |
| |
| DATA _rt0_386_linux_lib_argc<>(SB)/4, $0 |
| GLOBL _rt0_386_linux_lib_argc<>(SB),NOPTR, $4 |
| DATA _rt0_386_linux_lib_argv<>(SB)/4, $0 |
| GLOBL _rt0_386_linux_lib_argv<>(SB),NOPTR, $4 |
| |
| TEXT main(SB),NOSPLIT,$0 |
| JMP runtime·rt0_go(SB) |