From 08c9b3b9c800ac694a0e288116448e71f70a390b Mon Sep 17 00:00:00 2001 From: Michael Kerrisk Date: Mon, 8 Apr 2013 11:16:52 +0200 Subject: [PATCH] syscall.2: Move "Architecture calling conventions" subsection Signed-off-by: Michael Kerrisk --- man2/syscall.2 | 114 ++++++++++++++++++++++++------------------------- 1 file changed, 57 insertions(+), 57 deletions(-) diff --git a/man2/syscall.2 b/man2/syscall.2 index 2d3893697..b1490f39b 100644 --- a/man2/syscall.2 +++ b/man2/syscall.2 @@ -79,63 +79,6 @@ 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 and passing arguments to the -kernel. -The details for various architectures are listed in the two tables below. - -The first table lists the instruction used to transition to kernel mode, -(which might not be the fastest or best way to transition to the kernel, -so you might have to refer to the VDSO), -the register used to indicate the system call number, -and the register used to return the system call result. -.if t \{\ -.ft CW -\} -.TS -l l1 l l1 l. -arch/ABI instruction syscall # retval Notes -_ -arm/OABI swi NR - a1 NR is syscall # -arm/EABI swi 0x0 r7 r1 -blackfin excpt 0x0 P0 R0 -i386 int $0x80 eax eax -ia64 break 0x100000 r15 r10/r8C -parisc ble 0x100(%sr2, %r0) r20 r28 -sparc/32 t 0x10 g1 o0 -sparc/64 t 0x6d g1 o0 -x86_64 syscall rax rax -.TE -.if t \{\ -.in -.ft P -\} -.PP -The second table shows the registers used to pass the system call arguments. -.if t \{\ -.ft CW -\} -.TS -l l l l l l l l. -arch/ABI arg1 arg2 arg3 arg4 arg5 arg6 arg7 -_ -arm/OABI a1 a2 a3 a4 v1 v2 v3 -arm/EABI r1 r2 r3 r4 r5 r6 r7 -blackfin R0 R1 R2 R3 R4 R5 - -i386 ebx ecx edx esi edi ebp - -ia64 r11 r9 r10 r14 r15 r13 - -parisc r26 r25 r24 r23 r22 r21 - -sparc/32 o0 o1 o2 o3 o4 o5 - -sparc/64 o0 o1 o2 o3 o4 o5 - -x86_64 rdi rsi rdx r10 r8 r9 - -.TE -.if t \{\ -.in -.ft P -\} -.PP -Note that these tables don't cover the entire calling convention\(emsome -architectures may indiscriminately clobber other registers not listed here. .SS Architecture-specific requirements Each architecture ABI has its own requirements on how system call arguments are passed to the kernel. @@ -195,6 +138,63 @@ The affected system calls are .BR sync_file_range (2), and .BR truncate64 (2). +.SS Architecture calling conventions +Every architecture has its own way of invoking and passing arguments to the +kernel. +The details for various architectures are listed in the two tables below. + +The first table lists the instruction used to transition to kernel mode, +(which might not be the fastest or best way to transition to the kernel, +so you might have to refer to the VDSO), +the register used to indicate the system call number, +and the register used to return the system call result. +.if t \{\ +.ft CW +\} +.TS +l l1 l l1 l. +arch/ABI instruction syscall # retval Notes +_ +arm/OABI swi NR - a1 NR is syscall # +arm/EABI swi 0x0 r7 r1 +blackfin excpt 0x0 P0 R0 +i386 int $0x80 eax eax +ia64 break 0x100000 r15 r10/r8C +parisc ble 0x100(%sr2, %r0) r20 r28 +sparc/32 t 0x10 g1 o0 +sparc/64 t 0x6d g1 o0 +x86_64 syscall rax rax +.TE +.if t \{\ +.in +.ft P +\} +.PP +The second table shows the registers used to pass the system call arguments. +.if t \{\ +.ft CW +\} +.TS +l l l l l l l l. +arch/ABI arg1 arg2 arg3 arg4 arg5 arg6 arg7 +_ +arm/OABI a1 a2 a3 a4 v1 v2 v3 +arm/EABI r1 r2 r3 r4 r5 r6 r7 +blackfin R0 R1 R2 R3 R4 R5 - +i386 ebx ecx edx esi edi ebp - +ia64 r11 r9 r10 r14 r15 r13 - +parisc r26 r25 r24 r23 r22 r21 - +sparc/32 o0 o1 o2 o3 o4 o5 - +sparc/64 o0 o1 o2 o3 o4 o5 - +x86_64 rdi rsi rdx r10 r8 r9 - +.TE +.if t \{\ +.in +.ft P +\} +.PP +Note that these tables don't cover the entire calling convention\(emsome +architectures may indiscriminately clobber other registers not listed here. .SH EXAMPLE .nf #define _GNU_SOURCE