android_kernel_xiaomi_sm8350/arch/arm/kernel
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
..
apm.c [PATCH] capable/capability.h (arch/) 2006-01-11 18:42:14 -08:00
armksyms.c [ARM] 3104/1: ARM EABI: new helper function names 2006-01-14 16:18:29 +00:00
arthur.c [PATCH] fix missing includes 2005-10-30 17:37:32 -08:00
asm-offsets.c [PATCH] remove gcc-2 checks 2006-01-08 20:14:02 -08:00
bios32.c [PATCH] pci and yenta: pcibios_bus_to_resource 2005-08-04 21:32:46 -07:00
calls.S [ARM] Fix sys_sendto and sys_recvfrom 6-arg syscalls 2005-12-17 15:25:42 +00:00
compat.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
debug.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
dma-isa.c [ARM] Remove '__address' from scatterlist and convert to DMA API 2006-01-04 15:08:30 +00:00
dma.c [ARM] Move DMA exports to be next to each function 2006-01-04 15:52:45 +00:00
ecard.c [ARM] Convert some arm semaphores to mutexes 2006-01-12 18:42:23 +00:00
entry-armv.S [ARM] 3102/1: ARM EABI: stack pointer must be 64-bit aligned after a CPU exception 2006-01-14 16:18:08 +00:00
entry-common.S [ARM] 3105/4: ARM EABI: new syscall entry convention 2006-01-14 16:31:29 +00:00
entry-header.S [ARM] 3102/1: ARM EABI: stack pointer must be 64-bit aligned after a CPU exception 2006-01-14 16:18:08 +00:00
fiq.c [ARM] 3256/1: Make the function-returning ldm's use sp as the base register 2006-01-12 16:53:51 +00:00
head.S [ARM] 3259/1: remove phys_ram from struct machine_desc (part 1) 2006-01-13 20:51:46 +00:00
init_task.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
io.c [ARM] Fix compiler warnings for memcpy_toio/memcpy_fromio/memset_io 2005-09-24 10:42:06 +01:00
irq.c [ARM] Only call set_type method in setup_irq if it's defined 2006-01-09 19:19:18 +00:00
isa.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
iwmmxt.S kbuild: arm - use generic asm-offsets.h support 2005-09-09 21:08:59 +02:00
Makefile [ARM] Refine selection of ISA_DMA_API and generic dma.c code 2006-01-04 15:44:16 +00:00
module.c [ARM] 3205/1: Handle new EABI relocations when loading kernel modules. 2005-12-14 22:04:22 +00:00
process.c [PATCH] arm: task_stack_page() 2006-01-12 09:08:56 -08:00
ptrace.c [PATCH] arm: task_pt_regs() 2006-01-12 09:08:55 -08:00
ptrace.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
semaphore.c [ARM] 3103/1: ARM EABI: stack pointer must be 64-bit aligned (part 2) 2006-01-14 16:18:09 +00:00
setup.c [ARM] 3234/1: Update cpu_architecture() to deal with the new ID format 2006-01-12 16:28:16 +00:00
signal.c [ARM] 3168/1: Update ARM signal delivery and masking 2005-11-19 10:01:07 +00:00
signal.h [PATCH] ARM: Move signal return code into vector page 2005-06-22 20:26:05 +01:00
smp.c [PATCH] arm: task_stack_page() 2006-01-12 09:08:56 -08:00
sys_arm.c [ARM] 2952/1: fix a register clobber list 2005-10-04 23:17:53 +01:00
time.c [ARM] Cleanup ARM includes 2006-01-03 17:39:34 +00:00
traps.c [ARM] 3105/4: ARM EABI: new syscall entry convention 2006-01-14 16:31:29 +00:00
vmlinux.lds.S [ARM] Make kernel link address depend on PAGE_OFFSET 2006-01-03 17:28:33 +00:00