linux-syscalls 0.4.0

A library to easily invoke linux system calls.
Documentation
# Syscall registers
# +-------+------+------+------+------+------+------+--------+
# | sysno | arg0 | arg1 | arg2 | arg3 | arg4 | arg5 | return |
# +-------+------+------+------+------+------+------+--------+
# |  a7   |  a0  |  a1  |  a2  |  a3  |  a4  |  a5  |   a0   |
# +-------+------+------+------+------+------+------+--------+
#
# sysv calling convention
# +----------+--------------------------------+-------------------+
# |  return  |            params              | additional params |
# +----------+--------------------------------+-------------------+
# |  a0, a1  | a0, a1, a2, a3, a4, a5, a6, a7 |    stack RTL      |
# +----------+--------------------------------+-------------------+
#
# Registers are the same, we just need to copy last argument (sysno) in a7.

  .globl linux_syscalls_rs_syscall0
linux_syscalls_rs_syscall0:
  mv    a7, a0
  ecall
  ret

  .globl linux_syscalls_rs_syscall1
linux_syscalls_rs_syscall1:
  mv    a7, a1
  ecall
  ret

  .globl linux_syscalls_rs_syscall1_noreturn
linux_syscalls_rs_syscall1_noreturn:
  mv    a7, a1
  ecall
  unimp

  .globl linux_syscalls_rs_syscall2
linux_syscalls_rs_syscall2:
  mv    a7, a2
  ecall
  ret

  .globl linux_syscalls_rs_syscall3
linux_syscalls_rs_syscall3:
  mv    a7, a3
  ecall
  ret

  .globl linux_syscalls_rs_syscall4
linux_syscalls_rs_syscall4:
  mv    a7, a4
  ecall
  ret

  .globl linux_syscalls_rs_syscall5
linux_syscalls_rs_syscall5:
  mv    a7, a5
  ecall
  ret

  .globl linux_syscalls_rs_syscall6
linux_syscalls_rs_syscall6:
  mv    a7, a6
  ecall
  ret