kernel-ark/include
Nicolas Pitre 3f2829a315 [ARM] 3105/4: ARM EABI: new syscall entry convention
Patch from Nicolas Pitre

For a while we wanted to change the way syscalls were called on ARM.
Instead of encoding the syscall number in the swi instruction which
requires reading back the instruction from memory to extract that number
and polluting the data cache, it was decided that simply storing the
syscall number into r7 would be more efficient. Since this represents
an ABI change then making that change at the same time as EABI support
is the right thing to do.

It is now expected that EABI user space binaries put the syscall number
into r7 and use "swi 0" to call the kernel. Syscall register argument
are also expected to have "EABI arrangement" i.e. 64-bit arguments
should be put in a pair of registers from an even register number.

Example with long ftruncate64(unsigned int fd, loff_t length):

	legacy ABI:
	- put fd into r0
	- put length into r1-r2
	- use "swi #(0x900000 + 194)" to call the kernel

	new ARM EABI:
	- put fd into r0
	- put length into r2-r3 (skipping over r1)
	- put 194 into r7
	- use "swi 0" to call the kernel

Note that it is important to use 0 for the swi argument as backward
compatibility with legacy ABI user space relies on this.
The syscall macros in asm-arm/unistd.h were also updated to support
both ABIs and implement the right call method automatically.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2006-01-14 16:31:29 +00:00
..
acpi
asm-alpha [PATCH] death of get_thread_info/put_thread_info 2006-01-12 09:08:59 -08:00
asm-arm [ARM] 3105/4: ARM EABI: new syscall entry convention 2006-01-14 16:31:29 +00:00
asm-arm26 [PATCH] death of get_thread_info/put_thread_info 2006-01-12 09:08:59 -08:00
asm-cris [PATCH] death of get_thread_info/put_thread_info 2006-01-12 09:08:59 -08:00
asm-frv [PATCH] death of get_thread_info/put_thread_info 2006-01-12 09:08:59 -08:00
asm-generic Fix mutex_trylock() copy-and-paste bug (x86, x86-64, generic mutex-dec.h) 2006-01-11 15:50:47 -08:00
asm-h8300 [PATCH] death of get_thread_info/put_thread_info 2006-01-12 09:08:59 -08:00
asm-i386 [PATCH] death of get_thread_info/put_thread_info 2006-01-12 09:08:59 -08:00
asm-ia64 [PATCH] ia64: task_pt_regs() 2006-01-12 09:08:58 -08:00
asm-m32r [PATCH] death of get_thread_info/put_thread_info 2006-01-12 09:08:59 -08:00
asm-m68k [PATCH] m68k: kill mach_floppy_setup, convert to proper __setup() in drivers 2006-01-12 09:09:05 -08:00
asm-m68knommu [PATCH] m68k: kill mach_floppy_setup, convert to proper __setup() in drivers 2006-01-12 09:09:05 -08:00
asm-mips [PATCH] death of get_thread_info/put_thread_info 2006-01-12 09:08:59 -08:00
asm-parisc [PATCH] death of get_thread_info/put_thread_info 2006-01-12 09:08:59 -08:00
asm-powerpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc-merge 2006-01-12 10:21:22 -08:00
asm-ppc Merge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc-merge 2006-01-12 10:21:22 -08:00
asm-s390 [PATCH] death of get_thread_info/put_thread_info 2006-01-12 09:08:59 -08:00
asm-sh [PATCH] death of get_thread_info/put_thread_info 2006-01-12 09:08:59 -08:00
asm-sh64 [PATCH] death of get_thread_info/put_thread_info 2006-01-12 09:08:59 -08:00
asm-sparc [PATCH] death of get_thread_info/put_thread_info 2006-01-12 09:08:59 -08:00
asm-sparc64 [PATCH] sparc64: task_pt_regs() 2006-01-12 09:08:52 -08:00
asm-um [PATCH] death of get_thread_info/put_thread_info 2006-01-12 09:08:59 -08:00
asm-v850 [PATCH] death of get_thread_info/put_thread_info 2006-01-12 09:08:59 -08:00
asm-x86_64 [PATCH] death of get_thread_info/put_thread_info 2006-01-12 09:08:59 -08:00
asm-xtensa [PATCH] death of get_thread_info/put_thread_info 2006-01-12 09:08:59 -08:00
keys [PATCH] Keys: Remove key duplication 2006-01-06 08:33:29 -08:00
linux [PATCH] gianfar: Use new PHY_ID_FMT macro 2006-01-12 16:31:52 -05:00
math-emu
media V4L/DVB (3347): Fixes some bad global variables 2006-01-11 20:26:13 -02:00
mtd
net [PATCH] fix wrong comments in ieee80211.h 2006-01-12 16:39:45 -05:00
pcmcia
rdma
rxrpc
scsi Merge branch 'post-2.6.15' of git://brick.kernel.dk/data/git/linux-2.6-block 2006-01-06 09:01:25 -08:00
sound [PATCH] DocBook: fix kernel-doc comments 2006-01-10 08:01:53 -08:00
video [PATCH] include/video/newport.h: "extern inline" -> "static inline" 2006-01-10 08:01:50 -08:00