aboutsummaryrefslogtreecommitdiffstats
path: root/man2/syscall.2
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2013-04-07 10:46:29 +0200
committerMichael Kerrisk <mtk.manpages@gmail.com>2013-04-08 12:32:44 +0200
commitd1c98faff7adfc0f169748ad4c627b33ebf29efc (patch)
tree5096d17ddc533abd552d0165a8e970335f1b1195 /man2/syscall.2
parenta60b1f03ae8a1587268e2994aa36cb7de53cb357 (diff)
downloadman-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.229
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.