X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/f8bd95b7a13dfe54d800e2d7ecdb0329f0798289..986ce23ace2f7875a1a561bd947f435a7594146c:/lunaix-os/kernel/proc0.c diff --git a/lunaix-os/kernel/proc0.c b/lunaix-os/kernel/proc0.c index c38ad2b..d765691 100644 --- a/lunaix-os/kernel/proc0.c +++ b/lunaix-os/kernel/proc0.c @@ -1,10 +1,10 @@ #include #include +#include #include #include #include #include -#include #include #include #include @@ -67,31 +67,11 @@ int exec_initd() { int errno = 0; - struct ld_param param; - char filename[] = "/mnt/lunaix-os/usr/init"; - ld_create_param(¶m, __current, VMS_SELF); - - if ((errno = exec_load_byname(¶m, filename, NULL, NULL))) { + if (exec_kexecve("/mnt/lunaix-os/usr/init", NULL, NULL)) { goto fail; } - // user space - asm volatile("movw %0, %%ax\n" - "movw %%ax, %%es\n" - "movw %%ax, %%ds\n" - "movw %%ax, %%fs\n" - "movw %%ax, %%gs\n" - "pushl %0\n" - "pushl %1\n" - "pushl %2\n" - "pushl %3\n" - "retf" ::"i"(UDATA_SEG), - "r"(param.info.stack_top), - "i"(UCODE_SEG), - "r"(param.info.entry) - : "eax", "memory"); - fail("should not reach"); fail: