1 #ifndef __LUNAIX_CONTEXT_H
2 #define __LUNAIX_CONTEXT_H
8 #include <lunaix/compiler.h>
11 struct hart_transition
15 struct hart_state state;
16 struct exec_param eret;
21 install_hart_transition(ptr_t vm_mnt, struct hart_transition* tctx);
24 hart_prepare_transition(struct hart_transition* tctx,
25 ptr_t kstack_tp, ptr_t ustack_pt,
26 ptr_t entry, bool to_user);
29 hart_user_transfer(struct hart_transition* tctx,
30 ptr_t kstack_tp, ptr_t ustack_pt,
33 hart_prepare_transition(tctx, kstack_tp, ustack_pt, entry, true);
37 hart_kernel_transfer(struct hart_transition* tctx,
38 ptr_t kstack_tp, ptr_t entry)
40 hart_prepare_transition(tctx, kstack_tp, 0, entry, false);
43 #endif /* __LUNAIX_CONTEXT_H */