diff options
author | Marvin Borner | 2021-03-20 19:55:51 +0100 |
---|---|---|
committer | GitHub | 2021-03-20 19:55:51 +0100 |
commit | 5132bac014d63331acf61bb60b9254023f76b869 (patch) | |
tree | 8e2946b7a6630da13ee403c787f77270aeb6185d /kernel/features/syscall.c | |
parent | 435231378798819304eef427bad8e77dffea85df (diff) | |
parent | b96c27bba0b242fc860fc9a2fcb63f121312fa7e (diff) |
Merged ELF loading
Diffstat (limited to 'kernel/features/syscall.c')
-rw-r--r-- | kernel/features/syscall.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/kernel/features/syscall.c b/kernel/features/syscall.c index b0b37ac..7d68d93 100644 --- a/kernel/features/syscall.c +++ b/kernel/features/syscall.c @@ -72,16 +72,19 @@ static void syscall_handler(struct regs *r) case SYS_EXEC: { char *path = (char *)r->ebx; struct proc *proc = proc_make(PROC_PRIV_NONE); - r->eax = (u32)bin_load(path, proc); - if (r->eax != 0) + r->eax = (u32)elf_load(path, proc); + if (r->eax != 0) { proc_exit(proc, -r->eax); - // TODO: Reimplement argc,argv - proc_stack_push(proc, 0); - proc_yield(r); + } else { + // TODO: Reimplement argc,argv + proc_stack_push(proc, 0); + proc_yield(r); + } break; } case SYS_EXIT: { proc_exit(proc_current(), (int)r->ebx); + proc_yield(r); break; } case SYS_BOOT: { // TODO: Move |