mirror of
https://github.com/BoredDevNL/BoredOS.git
synced 2026-05-15 10:48:38 +00:00
26 lines
733 B
NASM
26 lines
733 B
NASM
; Copyright (c) 2023-2026 Chris (boreddevnl)
|
|
; This software is released under the GNU General Public License v3.0. See LICENSE file for details.
|
|
; This header needs to maintain in any file it is present in, as per the GPL license terms.
|
|
; userland/crt0.asm
|
|
global _start
|
|
extern main
|
|
extern sys_exit
|
|
|
|
section .text
|
|
_start:
|
|
; The kernel loads the ELF and jumps here.
|
|
; RSP should point to the 0x800000 stack.
|
|
|
|
; Align the stack to 16 bytes for C functions (System V ABI)
|
|
and rsp, -16
|
|
|
|
; Call main(argc, argv)
|
|
call main
|
|
|
|
; If main returns, call exit(status)
|
|
mov rdi, rax ; Pass main's return value to exit syscall
|
|
call sys_exit
|
|
|
|
; Fallback halt if exit miraculously returns
|
|
.hang:
|
|
jmp .hang
|