; AcssMicro - System Calls
; ========================
-%include "../../../Kernel/include/syscalls.inc.asm"
-
[bits 64]
[section .text]
[global _start]
[extern SoMain]
_start:
- pop rdi
+ mov rdi, [rsp ] ; Base
+ mov rsi, [rsp+ 8] ; ArgC
+ mov rdx, [rsp+16] ; ArgV
+ mov rcx, [rsp+24] ; EnvP
call SoMain
- mov rdi, [rsp]
- mov rsi, [rsp+8]
- mov rdx, [rsp+16]
+ mov rdi, [rsp+8]
+ mov rsi, [rsp+16]
+ mov rdx, [rsp+24]
call rax
mov rdi, rax
[global %1:func]
%1:
push rbx
+ push rbp
mov eax, %2
SYSCALL_OP
mov [DWORD rel _errno], ebx
+ pop rbp
pop rbx
ret
%endmacro
push rbp
mov rbp, rsp
push rbx
- push r11
+ push r12
mov r12, rsi ; Save in a reg for after the clone
jz .ret
mov rsp, rsi
.ret:
+ pop r12
pop rbx
pop rbp
ret