diff options
Diffstat (limited to 'arch/avr32/kernel/sys_avr32.c')
-rw-r--r-- | arch/avr32/kernel/sys_avr32.c | 14 |
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 | |||
53 | int 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 | } | ||