+++ /dev/null
-#include <lunaix/process.h>
-
-void
-proc_init_transfer(struct proc_info* proc,
- ptr_t stack_top,
- ptr_t target,
- int flags)
-{
- struct exec_param* execp =
- (struct exec_param*)(stack_top - sizeof(struct exec_param));
- isr_param* isrp = (isr_param*)((ptr_t)execp - sizeof(isr_param));
-
- *execp = (struct exec_param){
- .cs = KCODE_SEG, .ss = KDATA_SEG, .eip = target, .eflags = cpu_ldstate()
- };
-
- *isrp = (isr_param){ .registers = { .ds = KDATA_SEG,
- .es = KDATA_SEG,
- .fs = KDATA_SEG,
- .gs = KDATA_SEG },
- .execp = execp };
-
- if ((flags & TRANSFER_IE)) {
- execp->eflags |= 0x200;
- }
-
- proc->intr_ctx = isrp;
-}
\ No newline at end of file