diff options
author | Nicolas Pitre <nico@cam.org> | 2006-01-18 22:38:49 +0000 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-01-18 22:38:49 +0000 |
commit | 5e0974459df9acd6cd0952c98a58816ad820ae66 (patch) | |
tree | ac4ae7f47f6060e529694884b70c0cda6278fbd0 | |
parent | fcca538b83f2984095f15f0f90f6c7686e3a32d4 (diff) |
[ARM] 3271/1: ARM EABI: fix calling of cmpxchg syscall emulation
Patch from Nicolas Pitre
This is kernel provided user space code.
Since a syscall is used, it has to be updated to work with EABI.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r-- | arch/arm/kernel/entry-armv.S | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index 874e6bb7940..d401d908c46 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S @@ -735,8 +735,11 @@ __kuser_cmpxchg: @ 0xffff0fc0 * The kernel itself must perform the operation. * A special ghost syscall is used for that (see traps.c). */ + stmfd sp!, {r7, lr} + mov r7, #0xff00 @ 0xfff0 into r7 for EABI + orr r7, r7, #0xf0 swi #0x9ffff0 - mov pc, lr + ldmfd sp!, {r7, pc} #elif __LINUX_ARM_ARCH__ < 6 |