linux-syscalls 0.4.0

A library to easily invoke linux system calls.
Documentation
// Syscall registers
// +-------+------+------+------+------+------+------+--------+
// | sysno | arg0 | arg1 | arg2 | arg3 | arg4 | arg5 | return |
// +-------+------+------+------+------+------+------+--------+
// |  rax  | rdi  | rsi  | rdx  | r10  |  r8  |  r9  |  rax   |
// +-------+------+------+------+------+------+------+--------+
//
// sysv calling convention
// +----------+---------------------------+-------------------+
// |  return  |           params          | additional params |
// +----------+---------------------------+-------------------+
// | rax, rdx | rdi, rsi, rdx rcx, r8, r9 |      stack RTL    |
// +----------+---------------------------+-------------------+
//
//
// Registers are the same as the call convention params except for rax and r10
// So we can pass sysno as last param and move it on rax, same for r10.

  .intel_syntax noprefix

  .text

  .globl linux_syscalls_rs_syscall0
linux_syscalls_rs_syscall0:
  mov     rax, rdi
  syscall
  ret

  .globl linux_syscalls_rs_syscall1
linux_syscalls_rs_syscall1:
  mov     rax, rsi
  syscall
  ret

// useful for exit syscall exit(retcode);
  .globl linux_syscalls_rs_syscall1_noreturn
linux_syscalls_rs_syscall1_noreturn:
  mov     rax, rsi
  syscall
  ud2

  .globl linux_syscalls_rs_syscall2
linux_syscalls_rs_syscall2:
  mov     rax, rdx
  syscall
  ret

  .globl linux_syscalls_rs_syscall3
linux_syscalls_rs_syscall3:
  mov     rax, rcx
  syscall
  ret

  .globl linux_syscalls_rs_syscall4
linux_syscalls_rs_syscall4:
  mov     rax, r8
  mov     r10, rcx
  syscall
  ret

  .globl linux_syscalls_rs_syscall5
linux_syscalls_rs_syscall5:
  mov     rax, r9
  mov     r10, rcx
  syscall
  ret

.globl asmtest
asmtest:
  mov     rax, [rsp+0x8]
  ret

  .globl linux_syscalls_rs_syscall6
linux_syscalls_rs_syscall6:
  mov     rax, [rsp+0x8]
  mov     r10, rcx
  syscall
  ret