aboutsummaryrefslogtreecommitdiff
path: root/pk/init.c
diff options
context:
space:
mode:
Diffstat (limited to 'pk/init.c')
-rw-r--r--pk/init.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/pk/init.c b/pk/init.c
index 3058d43..fd9c819 100644
--- a/pk/init.c
+++ b/pk/init.c
@@ -98,7 +98,7 @@ uintptr_t boot_loader(struct mainvars* args)
__builtin_unreachable();
}
- pk_vm_init();
+ uintptr_t kernel_stack_top = pk_vm_init();
asm volatile("la t0, 1f; csrw mepc, t0; eret; 1:" ::: "t0");
// copy phdrs to user stack
@@ -179,5 +179,6 @@ uintptr_t boot_loader(struct mainvars* args)
trapframe_t tf;
init_tf(&tf, current.entry, stack_top, current.elf64);
__clear_cache(0, 0);
- pop_tf(&tf);
+ write_csr(sscratch, kernel_stack_top);
+ start_user(&tf);
}