From: Nicolas Pitre Date: Wed, 18 Jan 2006 22:38:49 +0000 (+0000) Subject: [ARM] 3271/1: ARM EABI: fix calling of cmpxchg syscall emulation X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=5e0974459df9acd6cd0952c98a58816ad820ae66;p=openwrt%2Fstaging%2Fblogic.git [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 Signed-off-by: Russell King --- diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index 874e6bb79405..d401d908c463 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