--- ./kernel/cpt/cpt_kernel.c.errno 2006-04-24 15:47:32.000000000 +0400 +++ ./kernel/cpt/cpt_kernel.c 2006-04-24 18:57:45.000000000 +0400 @@ -75,16 +75,24 @@ int local_kernel_thread(int (*fn)(void * } #ifdef __i386__ -static int errno; +int __execve(const char *file, char **argv, char **envp) +{ + long res; + __asm__ volatile ("int $0x80" + : "=a" (res) + : "0" (__NR_execve),"b" ((long)(file)),"c" ((long)(argv)), + "d" ((long)(envp)) : "memory"); + return (int)res; +} #endif int sc_execve(char *cmd, char **argv, char **env) { int ret; +#ifndef __i386__ ret = execve(cmd, argv, env); -#ifdef __i386__ - if (ret < 0) - ret = -errno; +#else + ret = __execve(cmd, argv, env); #endif return ret; }