diff options
author | Nicolas Pitre <nico@cam.org> | 2006-01-18 17:38:49 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-01-18 17:38:49 -0500 |
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 874e6bb79405..d401d908c463 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S | |||
@@ -735,8 +735,11 @@ __kuser_cmpxchg: @ 0xffff0fc0 | |||
735 | * The kernel itself must perform the operation. | 735 | * The kernel itself must perform the operation. |
736 | * A special ghost syscall is used for that (see traps.c). | 736 | * A special ghost syscall is used for that (see traps.c). |
737 | */ | 737 | */ |
738 | stmfd sp!, {r7, lr} | ||
739 | mov r7, #0xff00 @ 0xfff0 into r7 for EABI | ||
740 | orr r7, r7, #0xf0 | ||
738 | swi #0x9ffff0 | 741 | swi #0x9ffff0 |
739 | mov pc, lr | 742 | ldmfd sp!, {r7, pc} |
740 | 743 | ||
741 | #elif __LINUX_ARM_ARCH__ < 6 | 744 | #elif __LINUX_ARM_ARCH__ < 6 |
742 | 745 | ||