bk://bk.arm.linux.org.uk/linux-2.6-rmk
nico@org.rmk.(none)[rmk]|ChangeSet|20050203230136|41266 nico

# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
#   2005/02/03 23:01:36+00:00 nico@org.rmk.(none) 
#   [ARM PATCH] 2456/1: fix futex syscall argument passing
#   
#   Patch from Nicolas Pitre
#   
#   sys_futex wrapper to store its sixth argument on the stack.
#   Also fix a typo with sys_clone_wapper.
#   
#   Signed-off-by: Nicolas Pitre
#   Signed-off-by: Russell King
# 
# arch/arm/kernel/entry-common.S
#   2005/02/03 00:00:00+00:00 nico@org.rmk.(none) +5 -1
#   [PATCH] 2456/1: fix futex syscall argument passing
# 
# arch/arm/kernel/calls.S
#   2005/02/03 00:00:00+00:00 nico@org.rmk.(none) +2 -2
#   [PATCH] 2456/1: fix futex syscall argument passing
# 
# ChangeSet
#   2005/02/03 22:19:58+00:00 rmk@flint.arm.linux.org.uk 
#   [ARM] Fix sys_syscall
#   
#   Signed-off-by: Russell King
# 
# arch/arm/kernel/entry-common.S
#   2005/02/03 22:15:02+00:00 rmk@flint.arm.linux.org.uk +9 -7
#   Fix two problems with sys_syscall.
# 
# ChangeSet
#   2005/02/03 12:27:49-08:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-arm
# 
# MAINTAINERS
#   2005/02/03 12:27:45-08:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2005/02/02 20:58:58-08:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-arm
# 
# MAINTAINERS
#   2005/02/02 20:58:53-08:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# CREDITS
#   2005/02/02 20:58:53-08:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2005/01/28 14:23:08-08:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-arm
# 
# MAINTAINERS
#   2005/01/28 14:23:02-08:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2005/01/15 17:59:46-08:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-arm
# 
# MAINTAINERS
#   2005/01/15 17:59:40-08:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2005/01/13 16:36:43-08:00 akpm@bix.(none) 
#   Merge bk://bk.arm.linux.org.uk/linux-2.6-rmk
#   into bix.(none):/usr/src/bk-arm
# 
# MAINTAINERS
#   2005/01/13 16:36:39-08:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2005/01/13 16:33:42-08:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-arm
# 
# MAINTAINERS
#   2005/01/13 16:33:38-08:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# CREDITS
#   2005/01/13 16:33:38-08:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2005/01/12 12:14:51-08:00 akpm@bix.(none) 
#   Merge bk://bk.arm.linux.org.uk/linux-2.6-rmk
#   into bix.(none):/usr/src/bk-arm
# 
# MAINTAINERS
#   2005/01/12 12:14:47-08:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2005/01/11 21:32:02-08:00 akpm@bix.(none) 
#   Merge bk://bk.arm.linux.org.uk/linux-2.6-rmk
#   into bix.(none):/usr/src/bk-arm
# 
# CREDITS
#   2005/01/11 21:31:56-08:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2005/01/11 11:47:36-08:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-arm
# 
# MAINTAINERS
#   2005/01/11 11:47:31-08:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2005/01/10 20:25:29-08:00 akpm@bix.(none) 
#   Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-arm
# 
# MAINTAINERS
#   2005/01/10 20:25:24-08:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
# ChangeSet
#   2005/01/10 14:38:10-08:00 akpm@bix.(none) 
#   Merge bk://bk.arm.linux.org.uk/linux-2.6-rmk
#   into bix.(none):/usr/src/bk-arm
# 
# MAINTAINERS
#   2005/01/10 14:38:06-08:00 akpm@bix.(none) +0 -0
#   Auto merged
# 
diff -Nru a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S
--- a/arch/arm/kernel/calls.S	2005-02-03 18:16:10 -08:00
+++ b/arch/arm/kernel/calls.S	2005-02-03 18:16:10 -08:00
@@ -134,7 +134,7 @@
 		.long	sys_ipc
 		.long	sys_fsync
 		.long	sys_sigreturn_wrapper
-/* 120 */	.long	sys_clone_wapper
+/* 120 */	.long	sys_clone_wrapper
 		.long	sys_setdomainname
 		.long	sys_newuname
 		.long	sys_ni_syscall
@@ -254,7 +254,7 @@
 		.long	sys_fremovexattr
 		.long	sys_tkill
 		.long	sys_sendfile64
-/* 240 */	.long	sys_futex
+/* 240 */	.long	sys_futex_wrapper
 		.long	sys_sched_setaffinity
 		.long	sys_sched_getaffinity
 		.long	sys_io_setup
diff -Nru a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
--- a/arch/arm/kernel/entry-common.S	2005-02-03 18:16:10 -08:00
+++ b/arch/arm/kernel/entry-common.S	2005-02-03 18:16:10 -08:00
@@ -11,6 +11,7 @@
 
 #include <asm/thread_info.h>
 #include <asm/ptrace.h>
+#include <asm/unistd.h>
 
 #include "entry-header.S"
 
@@ -190,13 +191,14 @@
 		.type	sys_syscall, #function
 sys_syscall:
 		eor	scno, r0, #OS_NUMBER << 20
-		cmp	scno, #NR_syscalls	@ check range
-		stmleia	sp, {r5, r6}		@ shuffle args
-		movle	r0, r1
-		movle	r1, r2
-		movle	r2, r3
-		movle	r3, r4
-		ldrle	pc, [tbl, scno, lsl #2]
+		cmp	scno, #__NR_syscall - __NR_SYSCALL_BASE
+		cmpne	scno, #NR_syscalls	@ check range
+		stmloia	sp, {r5, r6}		@ shuffle args
+		movlo	r0, r1
+		movlo	r1, r2
+		movlo	r2, r3
+		movlo	r3, r4
+		ldrlo	pc, [tbl, scno, lsl #2]
 		b	sys_ni_syscall
 
 sys_fork_wrapper:
@@ -211,7 +213,7 @@
 		add	r3, sp, #S_OFF
 		b	sys_execve
 
-sys_clone_wapper:
+sys_clone_wrapper:
 		add	ip, sp, #S_OFF
 		str	ip, [sp, #4]
 		b	sys_clone
@@ -235,6 +237,10 @@
 sys_sigaltstack_wrapper:
 		ldr	r2, [sp, #S_OFF + S_SP]
 		b	do_sigaltstack
+
+sys_futex_wrapper:
+		str	r5, [sp, #4]		@ push sixth arg
+		b	sys_futex
 
 /*
  * Note: off_4k (r5) is always units of 4K.  If we can't do the requested
