Usermode/libc - Fix strchr and strrchr behavior
[tpg/acess2.git] / Usermode / Libraries / ld-acess.so_src / arch / x86_64.asm.h
index 62fc400..b80e092 100644 (file)
@@ -2,20 +2,21 @@
 ; 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
@@ -55,9 +56,11 @@ _errno:      dw      0       ; Placed in .text, to allow use of relative addressing
 [global %1:func]
 %1:
        push rbx
+       push rbp
        mov eax, %2
        SYSCALL_OP
        mov [DWORD rel _errno], ebx
+       pop rbp
        pop rbx
        ret
 %endmacro
@@ -152,7 +155,7 @@ clone:
        push rbp
        mov rbp, rsp
        push rbx
-       push r11
+       push r12
        
        mov r12, rsi    ; Save in a reg for after the clone
        
@@ -177,6 +180,7 @@ clone:
        jz .ret
        mov rsp, rsi
 .ret:
+       pop r12
        pop rbx
        pop rbp
        ret

UCC git Repository :: git.ucc.asn.au