summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-10-10 23:12:01 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2012-10-12 13:35:23 -0400
commit5522be6a4624a5f505555569e4d9cee946630686 (patch)
tree27a240cfb4dd0966be2f819319ca44097950878d
parent9fff2fa0db911b0b75ec1f9bec72460c0a676ef5 (diff)
downloadlinux-0-day-5522be6a4624a5f505555569e4d9cee946630686.tar.gz
linux-0-day-5522be6a4624a5f505555569e4d9cee946630686.tar.xz
alpha: switch to saner kernel_execve() semantics
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r--arch/alpha/Kconfig1
-rw-r--r--arch/alpha/include/asm/unistd.h1
-rw-r--r--arch/alpha/kernel/entry.S17
3 files changed, 2 insertions, 17 deletions
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
index 7da91246e2793..7a08cfb80ee83 100644
--- a/arch/alpha/Kconfig
+++ b/arch/alpha/Kconfig
@@ -21,6 +21,7 @@ config ALPHA
select GENERIC_STRNCPY_FROM_USER
select GENERIC_STRNLEN_USER
select GENERIC_KERNEL_THREAD
+ select GENERIC_KERNEL_EXECVE
help
The Alpha is a 64-bit general-purpose processor designed and
marketed by the Digital Equipment Corporation of blessed memory,
diff --git a/arch/alpha/include/asm/unistd.h b/arch/alpha/include/asm/unistd.h
index 3cb6c1188984f..7826e227e4d09 100644
--- a/arch/alpha/include/asm/unistd.h
+++ b/arch/alpha/include/asm/unistd.h
@@ -482,7 +482,6 @@
#define __ARCH_WANT_SYS_SIGPENDING
#define __ARCH_WANT_SYS_RT_SIGSUSPEND
#define __ARCH_WANT_SYS_EXECVE
-#define __ARCH_WANT_KERNEL_EXECVE
/* "Conditional" syscalls. What we want is
diff --git a/arch/alpha/kernel/entry.S b/arch/alpha/kernel/entry.S
index 16e074f9e5812..a7607832dd4ff 100644
--- a/arch/alpha/kernel/entry.S
+++ b/arch/alpha/kernel/entry.S
@@ -603,24 +603,9 @@ ret_from_kernel_thread:
mov $9, $27
mov $10, $16
jsr $26, ($9)
- ldgp $gp, 0($26)
- mov $0, $16
- mov $31, $26
- jmp $31, sys_exit
-.end ret_from_kernel_thread
-
- .globl ret_from_kernel_execve
- .align 4
- .ent ret_from_kernel_execve
-ret_from_kernel_execve:
- mov $16, $sp
- /* Avoid the HAE being gratuitously wrong, to avoid restoring it. */
- ldq $2, alpha_mv+HAE_CACHE
- stq $2, 152($sp) /* HAE */
mov $31, $19 /* to disable syscall restarts */
br $31, ret_to_user
-
-.end ret_from_kernel_execve
+.end ret_from_kernel_thread
/*