9.1 Table and target quirks

Syscalls in Ironclad have an architecture-dependent ABI, but the table and its indexes are always the same, this is done to simplify development. and here is a list of the supported architectures and the ABI for each of them. Here is the table:

  1. exit.
  2. arch_prctl.
  3. open.
  4. close.
  5. read.
  6. write.
  7. seek.
  8. mmap.
  9. munmap.
  10. getpid.
  11. getppid.
  12. exec.
  13. clone.
  14. wait.
  15. socket.
  16. sethostname.
  17. unlink.
  18. fstat.
  19. Empty.
  20. chdir.
  21. ioctl.
  22. sched_yield.
  23. delete_tcluster.
  24. pipe.
  25. getuid.
  26. rename.
  27. sysconf.
  28. spawn.
  29. gettid.
  30. manage_tcluster.
  31. fcntl.
  32. exit_thread.
  33. getrandom.
  34. mprotect.
  35. sync.
  36. set_mac_capabilities.
  37. get_mac_capabilities.
  38. add_mac_permissions.
  39. set_mac_enforcement.
  40. mount.
  41. umount.
  42. readlink.
  43. getdents.
  44. mknod.
  45. truncate.
  46. bind.
  47. symlink.
  48. connect.
  49. openpty.
  50. fsync.
  51. link.
  52. ptrace.
  53. listen.
  54. accept.
  55. getrlimit.
  56. setrlimit.
  57. access.
  58. poll.
  59. geteuid.
  60. setuids.
  61. fchmod.
  62. umask.
  63. reboot.
  64. fchown.
  65. pread.
  66. pwrite.
  67. getsockname.
  68. getpeername.
  69. shutdown.
  70. futex.
  71. clock.
  72. clock_nanosleep.
  73. getrusage.
  74. recvfrom.
  75. sendto.
  76. config_netinter.
  77. utimes.
  78. create_tcluster.
  79. switch_tcluster.
  80. sigprogmask.
  81. sigaction.
  82. send_signal.
  83. getprio.
  84. setprio.
  85. getgid.
  86. getegid.
  87. setgids.
  88. getgroups.
  89. setgroups.
  90. ttyname.
  91. fadvise.
  92. shmat.
  93. shmctl.
  94. shmdl.
  95. shmget.
  96. getsockopt.
  97. setsockopt.
  98. gettidid.
  99. settidid.

9.1.1 aarch64-stivale2

Syscalls are invoked in Ironclad by using swi.

The index of the syscall is passed over %x8, while the return value is returned in %x0, errno is returned in %x9, arguments are passed over %x0 to r7.

9.1.2 arm-raspi2b

Syscalls are invoked in Ironclad by using swi.

The index of the syscall is passed over %r4, while the return value is returned in %r0, errno is returned in %r1, arguments are passed over %r0 to r7.

9.1.3 sparc-leon3

The syscall mechanism for leon3 is yet to be implemented. Sorry!

9.1.4 x86_64-limine

Syscalls are invoked in Ironclad by using syscall.

The index of the syscall is passed over %rax, while the return value is returned in %rax, errno is returned on %rdx, arguments are passed over %rdi, %rsi, %rdx, %r12, %r8, %r9, and %r10, following the SysV ABI.