diff options
| author | Mike Frysinger <vapier@gentoo.org> | 2013-04-07 10:46:29 +0200 |
|---|---|---|
| committer | Michael Kerrisk <mtk.manpages@gmail.com> | 2013-04-08 12:32:44 +0200 |
| commit | d1c98faff7adfc0f169748ad4c627b33ebf29efc (patch) | |
| tree | 5096d17ddc533abd552d0165a8e970335f1b1195 /man2/syscall.2 | |
| parent | a60b1f03ae8a1587268e2994aa36cb7de53cb357 (diff) | |
| download | man-pages-d1c98faff7adfc0f169748ad4c627b33ebf29efc.tar.gz | |
syscall.2: Document the exact calling convention for architecture system calls
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
Diffstat (limited to 'man2/syscall.2')
| -rw-r--r-- | man2/syscall.2 | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/man2/syscall.2 b/man2/syscall.2 index 4e61d925f6..80c807cc63 100644 --- a/man2/syscall.2 +++ b/man2/syscall.2 @@ -79,6 +79,35 @@ and an error code is stored in .BR syscall () first appeared in 4BSD. +.SS Architecture calling conventions +Every architecture has its own way of invoking & passing arguments to the +kernel. +Note that the instruction listed below might not be the fastest or best way to +transition to the kernel, so you might have to refer to the VDSO. +Also note that this doesn't cover the entire calling convention -- some +architectures may indiscriminately clobber other registers not listed here. +.if t \{\ +.ft CW +\} +.TS +l l l l l l l l l l l. +arch/ABI insn NR ret arg1 arg2 arg3 arg4 arg5 arg6 arg7 +_ +arm/OABI swi NR; - a1 a1 a2 a3 a4 v1 v2 v3 +arm/EABI swi 0x0; r7 r1 r1 r2 r3 r4 r5 r6 r7 +bfin excpt 0x0; P0 R0 R0 R1 R2 R3 R4 R5 - +i386 int $0x80; eax eax ebx ecx edx esi edi ebp - +ia64 break 0x100000; r15 r10/r8 r11 r9 r10 r14 r15 r13 - +.\" not sure about insn or NR +.\" parisc ble 0x100(%%sr2, %%r0); - r28 r26 r25 r24 r23 r22 r21 - +sparc/32 t 0x10; g1 o0 o0 o1 o2 o3 o4 o5 - +sparc/64 t 0x6d; g1 o0 o0 o1 o2 o3 o4 o5 - +x86_64 syscall; rax rax rdi rsi rdx r10 r8 r9 - +.TE +.if t \{\ +.in +.ft P +\} .SS Architecture-specific requirements Each architecture ABI has its own requirements on how system call arguments are passed to the kernel. |
