X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Fld-acess.so_src%2Farch%2Fx86_64.asm.h;h=b80e092ba2d2ec2df8d698668d22f91658be1fb5;hb=HEAD;hp=62fc400a7de6f0bd8730f0eac74ddb97883cd3e8;hpb=c53533a539638c1c0ad4f4c99c091ae7972cfd8b;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/ld-acess.so_src/arch/x86_64.asm.h b/Usermode/Libraries/ld-acess.so_src/arch/x86_64.asm.h index 62fc400a..b80e092b 100644 --- a/Usermode/Libraries/ld-acess.so_src/arch/x86_64.asm.h +++ b/Usermode/Libraries/ld-acess.so_src/arch/x86_64.asm.h @@ -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