blob: 8c6635e3678d4523c06a986a9725f343188a6a18 [file] [log] [blame]
#
# arch/i386/crt0.S
#
# Does arch-specific initialization and invokes __libc_init
# with the appropriate arguments.
#
# See __static_init.c or __shared_init.c for the expected
# arguments.
#
.text
.align 4
.type _start,@function
.globl _start
_start:
# Save the address of the ELF argument array
movl %esp,%eax # Address of ELF arguments
# Set up a faux stack frame for the benefit of gdb
xorl %ebp,%ebp
push %ebp # Keep gdb from getting confused
push %ebp # Keep gdb from getting confused
# Push the arguments and called __libc_init()
#ifndef _REGPARM
push %edx # atexit() function
push %eax # ELF array
#endif
call __libc_init
# If __libc_init returns, problem...
hlt
.size _start, .-_start