void foo(void)
{
- dbg_printf("Running...\n");
-
- for(;;) {
- asm volatile("hlt");
- }
+ for(;;);
return;
}
goto cleanup;
}
- task_prepare(proc->p_tasks, (u32_t)pdbr, (u32_t)foo, (u32_t)kstack, (u32_t)ustack + PAGE_SIZE, 0);
+ task_prepare(proc->p_tasks, (u32_t)pdbr, (u32_t)foo, (u32_t)kstack, (u32_t)ustack + PAGE_SIZE, 3);
proc->p_tasks->t_sp = (u32_t)(CONFIG_KERNEL_STACK_BASE + ((u32_t)proc->p_tasks->t_sp - (u32_t)kstack));
dbg_printf("ESP0 = 0x%08x\n", proc->p_tasks->t_sp);
int process_switch(process_t *proc)
{
-// struct stack_frame *sfrm;
int ret_val;
-/*
- sfrm = (void*)proc->p_tasks->t_sp;
-
- dbg_printf("SS = %08x\n"
- "ESP = %08x\n"
- "EFL = %08x\n"
- "CS = %08x\n"
- "EIP = %08x\n"
- "DS = %08x\n",
- sfrm->ss,
- sfrm->prevesp,
- sfrm->eflags,
- sfrm->cs,
- sfrm->eip,
- sfrm->ds);
-
- for(;;) {
- asm volatile("hlt");
- }
-*/
+
ret_val = task_switch(proc->p_tasks);
return(ret_val);