Explorar o código

[ARM] Fix sys_sendto and sys_recvfrom 6-arg syscalls

Rather than providing more wrappers for 6-arg syscalls, arrange for
them to be supported as standard.  This just means that we always
store the 6th argument on the stack, rather than in the wrappers.

This means we eliminate the wrappers for:
* sys_futex
* sys_arm_fadvise64_64
* sys_mbind
* sys_ipc

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Russell King %!s(int64=19) %!d(string=hai) anos
pai
achega
567bd98017
Modificáronse 2 ficheiros con 6 adicións e 22 borrados
  1. 4 4
      arch/arm/kernel/calls.S
  2. 2 18
      arch/arm/kernel/entry-common.S

+ 4 - 4
arch/arm/kernel/calls.S

@@ -131,7 +131,7 @@ __syscall_start:
 		.long	sys_wait4
 		.long	sys_wait4
 /* 115 */	.long	sys_swapoff
 /* 115 */	.long	sys_swapoff
 		.long	sys_sysinfo
 		.long	sys_sysinfo
-		.long	sys_ipc_wrapper
+		.long	sys_ipc
 		.long	sys_fsync
 		.long	sys_fsync
 		.long	sys_sigreturn_wrapper
 		.long	sys_sigreturn_wrapper
 /* 120 */	.long	sys_clone_wrapper
 /* 120 */	.long	sys_clone_wrapper
@@ -254,7 +254,7 @@ __syscall_start:
 		.long	sys_fremovexattr
 		.long	sys_fremovexattr
 		.long	sys_tkill
 		.long	sys_tkill
 		.long	sys_sendfile64
 		.long	sys_sendfile64
-/* 240 */	.long	sys_futex_wrapper
+/* 240 */	.long	sys_futex
 		.long	sys_sched_setaffinity
 		.long	sys_sched_setaffinity
 		.long	sys_sched_getaffinity
 		.long	sys_sched_getaffinity
 		.long	sys_io_setup
 		.long	sys_io_setup
@@ -284,7 +284,7 @@ __syscall_start:
 		.long	sys_fstatfs64
 		.long	sys_fstatfs64
 		.long	sys_tgkill
 		.long	sys_tgkill
 		.long	sys_utimes
 		.long	sys_utimes
-/* 270 */	.long	sys_arm_fadvise64_64_wrapper
+/* 270 */	.long	sys_arm_fadvise64_64
 		.long	sys_pciconfig_iobase
 		.long	sys_pciconfig_iobase
 		.long	sys_pciconfig_read
 		.long	sys_pciconfig_read
 		.long	sys_pciconfig_write
 		.long	sys_pciconfig_write
@@ -333,7 +333,7 @@ __syscall_start:
 		.long	sys_inotify_init
 		.long	sys_inotify_init
 		.long	sys_inotify_add_watch
 		.long	sys_inotify_add_watch
 		.long	sys_inotify_rm_watch
 		.long	sys_inotify_rm_watch
-		.long	sys_mbind_wrapper
+		.long	sys_mbind
 /* 320 */	.long	sys_get_mempolicy
 /* 320 */	.long	sys_get_mempolicy
 		.long	sys_set_mempolicy
 		.long	sys_set_mempolicy
 __syscall_end:
 __syscall_end:

+ 2 - 18
arch/arm/kernel/entry-common.S

@@ -145,7 +145,7 @@ ENTRY(vector_swi)
 #endif
 #endif
 	enable_irq
 	enable_irq
 
 
-	str	r4, [sp, #-S_OFF]!		@ push fifth arg
+	stmdb	sp!, {r4, r5}			@ push fifth and sixth args
 
 
 	get_thread_info tsk
 	get_thread_info tsk
 	ldr	ip, [tsk, #TI_FLAGS]		@ check for syscall tracing
 	ldr	ip, [tsk, #TI_FLAGS]		@ check for syscall tracing
@@ -204,7 +204,7 @@ ENTRY(sys_call_table)
  * Special system call wrappers
  * Special system call wrappers
  */
  */
 @ r0 = syscall number
 @ r0 = syscall number
-@ r5 = syscall table
+@ r8 = syscall table
 		.type	sys_syscall, #function
 		.type	sys_syscall, #function
 sys_syscall:
 sys_syscall:
 		eor	scno, r0, #__NR_SYSCALL_BASE
 		eor	scno, r0, #__NR_SYSCALL_BASE
@@ -255,22 +255,6 @@ sys_sigaltstack_wrapper:
 		ldr	r2, [sp, #S_OFF + S_SP]
 		ldr	r2, [sp, #S_OFF + S_SP]
 		b	do_sigaltstack
 		b	do_sigaltstack
 
 
-sys_futex_wrapper:
-		str	r5, [sp, #4]		@ push sixth arg
-		b	sys_futex
-
-sys_arm_fadvise64_64_wrapper:
-		str	r5, [sp, #4]		@ push r5 to stack
-		b	sys_arm_fadvise64_64
-
-sys_mbind_wrapper:
-		str	r5, [sp, #4]
-		b	sys_mbind
-
-sys_ipc_wrapper:
-		str	r5, [sp, #4]		@ push sixth arg
-		b	sys_ipc
-
 /*
 /*
  * Note: off_4k (r5) is always units of 4K.  If we can't do the requested
  * Note: off_4k (r5) is always units of 4K.  If we can't do the requested
  * offset, we return EINVAL.
  * offset, we return EINVAL.