d8b71617516e8cacc9e7f06e763bb72dafaa7975
[musl] / crt / x86_64 / Scrt1.s
1 /* Written 2011 Nicholas J. Kain, released as Public Domain */
2 .weak _init
3 .weak _fini
4 .text
5 .global _start
6 _start:
7         xor %rbp,%rbp   /* rbp:undefined -> mark as zero 0 (ABI) */
8         mov %rdx,%r9    /* 6th arg: ptr to register with atexit() */
9         pop %rsi        /* 2nd arg: argc */
10         mov %rsp,%rdx   /* 3rd arg: argv */
11         andq $-16,%rsp  /* align stack pointer */
12         push %rax       /* 8th arg: glibc ABI compatible */
13         push %rsp       /* 7th arg: glibc ABI compatible */
14         lea _fini(%rip),%r8           /* 5th arg: fini/dtors function */
15         lea _init(%rip),%rcx          /* 4th arg: init/ctors function */
16         mov main@GOTPCREL(%rip),%rdi  /* 1st arg: application entry ip */
17         call __libc_start_main@PLT    /* musl init will run the program */
18 1:      jmp 1b