aboutsummaryrefslogtreecommitdiffstats
path: root/arch/avr32/kernel/sys_avr32.c
diff options
context:
space:
mode:
authorHaavard Skinnemoen <hskinnemoen@atmel.com>2006-10-02 05:18:46 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-02 10:57:24 -0400
commitc5f2420a063fcc5a4cd6610c3ef6934827853001 (patch)
tree2fe3b65e20ea176f23cdb6954d8c958d10e43c1d /arch/avr32/kernel/sys_avr32.c
parent135ab6ec8fdad6f61aabe53f456821baf4a4aa0e (diff)
[PATCH] AVR32: Implement kernel_execve
Move execve() into arch/avr32/kernel/sys_avr32.c, rename it to kernel_execve() and return the syscall return value directly without setting errno. This also gets rid of the __KERNEL_SYSCALLS__ stuff from unistd.h and expands #ifdef __KERNEL__ to cover everything in unistd.h except the __NR_foo definitions. Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com> Cc: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/avr32/kernel/sys_avr32.c')
-rw-r--r--arch/avr32/kernel/sys_avr32.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/avr32/kernel/sys_avr32.c b/arch/avr32/kernel/sys_avr32.c
index 6ec5693da448..8deb6003ee62 100644
--- a/arch/avr32/kernel/sys_avr32.c
+++ b/arch/avr32/kernel/sys_avr32.c
@@ -49,3 +49,17 @@ asmlinkage long sys_mmap2(unsigned long addr, unsigned long len,
49 fput(file); 49 fput(file);
50 return error; 50 return error;
51} 51}
52
53int kernel_execve(const char *file, char **argv, char **envp)
54{
55 register long scno asm("r8") = __NR_execve;
56 register long sc1 asm("r12") = (long)file;
57 register long sc2 asm("r11") = (long)argv;
58 register long sc3 asm("r10") = (long)envp;
59
60 asm volatile("scall"
61 : "=r"(sc1)
62 : "r"(scno), "0"(sc1), "r"(sc2), "r"(sc3)
63 : "cc", "memory");
64 return sc1;
65}