Usermode/ld-acess - Fix x86_64 not saving RBP on no-arg syscalls
[tpg/acess2.git] / Usermode / Libraries / ld-acess.so_src / arch / x86_64.asm.h
index 6c3ac0f..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

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