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 */ 31int kernel_execve(const char *filename, 32 const char *const argv[], 33 const char *const envp[]) 34{ 35 long __res; 36 asm volatile ("push %%ebx ; movl %2,%%ebx ; int $0x80 ; pop %%ebx" 37 : "=a" (__res) 38 : "0" (__NR_execve), "ri" (filename), "c" (argv), "d" (envp) : "memory"); 39 return __res; 40} 41