From fe4c623cb9320226866829317cea8ba0c49e7dbc Mon Sep 17 00:00:00 2001 From: Kimplul Date: Sun, 7 Jul 2024 18:12:55 +0300 Subject: make executable entrypoint universal callback + Effectively means that all executables can be called into, but if an exe doesn't want to deal with anyone else it should just set a flag like `not_really_a_server` or whatever --- arch/riscv64/kernel/proc.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'arch/riscv64/kernel') diff --git a/arch/riscv64/kernel/proc.c b/arch/riscv64/kernel/proc.c index 4310378..413c078 100644 --- a/arch/riscv64/kernel/proc.c +++ b/arch/riscv64/kernel/proc.c @@ -31,15 +31,16 @@ void run_init(struct tcb *t, vm_t fdt, vm_t initrd) bkl_unlock(); __asm__ volatile ("mv sp, %0\n" "li a0, %1\n" - "li a1, %2\n" - "mv a2, %3\n" + "mv a1, %2\n" + "li a2, %3\n" "mv a3, %4\n" "mv a4, %5\n" + "li a5, %6\n" "sret\n" : : "r" (stack_top), - "K" (0), "K" (SYS_USER_BOOTED), - "r" (t->tid), "r" (fdt), "r" (initrd) + "K" (0), "r" (t->tid), "K" (SYS_USER_BOOTED), + "r" (fdt), "r" (initrd), "K" (1) : "memory"); /* we should never reach this */ unreachable(); -- cgit v1.3