X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/707c6653985f55463e8a59a58b248ba8af3b44b2..ec99de19aac85f73b1caff8471e7e9a8c8aea38f:/lunaix-os/kernel/loader/exec.c?ds=sidebyside diff --git a/lunaix-os/kernel/loader/exec.c b/lunaix-os/kernel/loader/exec.c index cf0a422..0105753 100644 --- a/lunaix-os/kernel/loader/exec.c +++ b/lunaix-os/kernel/loader/exec.c @@ -47,7 +47,7 @@ __exec_remap_heap(struct ld_param* param, struct proc_mm* pvms) struct mmap_param map_param = { .pvms = pvms, .vms_mnt = param->vms_mnt, - .flags = MAP_ANON | MAP_PRIVATE | MAP_FIXED, + .flags = MAP_ANON | MAP_PRIVATE, .type = REGION_TYPE_HEAP, .proct = PROT_READ | PROT_WRITE, .mlen = DEFAULT_HEAP_PAGES * PG_SIZE }; @@ -181,11 +181,12 @@ __DEFINE_LXSYSCALL3(int, schedule(); fail("should not reach"); } + goto done; } - isr_param* intr_ctx = &__current->intr_ctx; - intr_ctx->esp = ldparam.info.stack_top; - intr_ctx->eip = ldparam.info.entry; + volatile struct exec_param* execp = __current->intr_ctx.execp; + execp->esp = ldparam.info.stack_top; + execp->eip = ldparam.info.entry; // we will jump to new entry point (_u_start) upon syscall's // return so execve 'will not return' from the perspective of it's invoker