1 /* 2 * This file contains various random system calls that 3 * have a non-standard calling sequence on the Linux/i386 4 * platform. 5 */ 6 7 #include <linux/errno.h> 8 #include <linux/sched.h> 9 #include <linux/mm.h> 10 #include <linux/fs.h> 11 #include <linux/smp.h> 12 #include <linux/sem.h> 13 #include <linux/msg.h> 14 #include <linux/shm.h> 15 #include <linux/stat.h> 16 #include <linux/syscalls.h> 17 #include <linux/mman.h> 18 #include <linux/file.h> 19 #include <linux/utsname.h> 20 #include <linux/ipc.h> 21 22 #include <linux/uaccess.h> 23 #include <linux/unistd.h> 24 25 #include <asm/syscalls.h> 26 27 /* 28 * Do a system call from kernel instead of calling sys_execve so we 29 * end up with proper pt_regs. 30 */ kernel_execve(const char * filename,const char * const argv[],const char * const envp[])31int kernel_execve(const char *filename, 32 const char *const argv[], 33 const char *const envp[]) 34 { 35 long __res; 36 asm volatile ("int $0x80" 37 : "=a" (__res) 38 : "0" (__NR_execve), "b" (filename), "c" (argv), "d" (envp) : "memory"); 39 return __res; 40 } 41