banan-os/libc/arch/x86_64/crt0.S

36 lines
500 B
ArmAsm

.section .text
.global _start
_start:
# Set up end of the stack frame linked list.
movq $0, %rbp
pushq %rbp # rip=0
pushq %rbp # rbp=0
movq %rsp, %rbp
# Save argc, argv, environ
pushq %rdx
pushq %rsi
pushq %rdi
# Prepare malloc, environment
movq %rdx, %rdi
call _init_libc
# Call global constructos
call _init
# Restore argc, argv, environ
popq %rdi
popq %rsi
popq %rdx
# Run main
call main
# Cleanly exit the process
movl %eax, %edi
call exit
.size _start, . - _start