[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>
Tento commit je obsažen v:

odevzdal
Linus Torvalds

rodič
135ab6ec8f
revize
c5f2420a06
@@ -49,3 +49,17 @@ asmlinkage long sys_mmap2(unsigned long addr, unsigned long len,
|
||||
fput(file);
|
||||
return error;
|
||||
}
|
||||
|
||||
int kernel_execve(const char *file, char **argv, char **envp)
|
||||
{
|
||||
register long scno asm("r8") = __NR_execve;
|
||||
register long sc1 asm("r12") = (long)file;
|
||||
register long sc2 asm("r11") = (long)argv;
|
||||
register long sc3 asm("r10") = (long)envp;
|
||||
|
||||
asm volatile("scall"
|
||||
: "=r"(sc1)
|
||||
: "r"(scno), "0"(sc1), "r"(sc2), "r"(sc3)
|
||||
: "cc", "memory");
|
||||
return sc1;
|
||||
}
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele