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:
Syscalls are invoked in Ironclad by using ecall
.
The index of the syscall is passed over a7
, while the return value is
returned in a0
, errno is returned in a1
, arguments are passed
over a0
to a6
.
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.