aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/rt0_linux_386.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/rt0_linux_386.s')
-rw-r--r--src/runtime/rt0_linux_386.s70
1 files changed, 6 insertions, 64 deletions
diff --git a/src/runtime/rt0_linux_386.s b/src/runtime/rt0_linux_386.s
index 23bfc98b10..325066fc1d 100644
--- a/src/runtime/rt0_linux_386.s
+++ b/src/runtime/rt0_linux_386.s
@@ -4,72 +4,14 @@
#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
+TEXT _rt0_386_linux(SB),NOSPLIT,$0
+ JMP _rt0_386(SB)
-// 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
+ JMP _rt0_386_lib(SB)
TEXT main(SB),NOSPLIT,$0
+ // Remove the return address from the stack.
+ // rt0_go doesn't expect it to be there.
+ ADDL $4, SP
JMP runtime·rt0_go(SB)