Fix tasking
This commit is contained in:
parent
9d2c37329f
commit
84db4cea1f
@ -37,6 +37,14 @@ Task* tasking_createTaskCr3Kmode(void* eip,void* cr3,char kmode) {
|
|||||||
task->kernel_esp=(((uint32_t)alloc_pages(1))+0xfff);
|
task->kernel_esp=(((uint32_t)alloc_pages(1))+0xfff);
|
||||||
task->kernel_esp_top=task->kernel_esp;
|
task->kernel_esp_top=task->kernel_esp;
|
||||||
if (kmode) {
|
if (kmode) {
|
||||||
|
task->kernel_esp-=5*4;
|
||||||
|
uint32_t* stack_top_val=(uint32_t*)task->kernel_esp;
|
||||||
|
stack_top_val[0]=0;
|
||||||
|
stack_top_val[1]=0;
|
||||||
|
stack_top_val[2]=0;
|
||||||
|
stack_top_val[3]=0;
|
||||||
|
stack_top_val[4]=eip;
|
||||||
|
} else {
|
||||||
task->kernel_esp-=7*4;
|
task->kernel_esp-=7*4;
|
||||||
uint32_t* stack_top_val=(uint32_t*)task->kernel_esp;
|
uint32_t* stack_top_val=(uint32_t*)task->kernel_esp;
|
||||||
stack_top_val[0]=0;
|
stack_top_val[0]=0;
|
||||||
@ -46,14 +54,6 @@ Task* tasking_createTaskCr3Kmode(void* eip,void* cr3,char kmode) {
|
|||||||
stack_top_val[4]=task_init;
|
stack_top_val[4]=task_init;
|
||||||
stack_top_val[5]=(((uint32_t)alloc_pages(1))+0xfff);;
|
stack_top_val[5]=(((uint32_t)alloc_pages(1))+0xfff);;
|
||||||
stack_top_val[6]=eip;
|
stack_top_val[6]=eip;
|
||||||
} else {
|
|
||||||
task->kernel_esp-=5*4;
|
|
||||||
uint32_t* stack_top_val=(uint32_t*)task->kernel_esp;
|
|
||||||
stack_top_val[0]=0;
|
|
||||||
stack_top_val[1]=0;
|
|
||||||
stack_top_val[2]=0;
|
|
||||||
stack_top_val[3]=0;
|
|
||||||
stack_top_val[4]=eip;
|
|
||||||
}
|
}
|
||||||
load_address_space(old_cr3);
|
load_address_space(old_cr3);
|
||||||
task->next=NULL;
|
task->next=NULL;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user