1 /*
2  * Copyright (C) 2004-2006 Atmel Corporation
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  */
8 #include <linux/unistd.h>
9 
kernel_execve(const char * file,const char * const * argv,const char * const * envp)10 int kernel_execve(const char *file,
11 		  const char *const *argv,
12 		  const char *const *envp)
13 {
14 	register long scno asm("r8") = __NR_execve;
15 	register long sc1 asm("r12") = (long)file;
16 	register long sc2 asm("r11") = (long)argv;
17 	register long sc3 asm("r10") = (long)envp;
18 
19 	asm volatile("scall"
20 		     : "=r"(sc1)
21 		     : "r"(scno), "0"(sc1), "r"(sc2), "r"(sc3)
22 		     : "cc", "memory");
23 	return sc1;
24 }
25