summaryrefslogtreecommitdiff
path: root/kernel/scheduler.c
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-09-26 23:58:14 +0200
committerMiguel <m.i@gmx.at>2018-09-26 23:58:14 +0200
commitb86f48da7fc46934d576698bb4f16be9b2a7eaf9 (patch)
treeea42a72faeb406c303025b0c981a76e533a8b110 /kernel/scheduler.c
parent915791f6acedbb35db73216156c1baa790e384d9 (diff)
some bugfixes
Diffstat (limited to 'kernel/scheduler.c')
-rw-r--r--kernel/scheduler.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel/scheduler.c b/kernel/scheduler.c
index f6067e5..dfe1b25 100644
--- a/kernel/scheduler.c
+++ b/kernel/scheduler.c
@@ -81,7 +81,7 @@ volatile void scheduler_init(uint32_t cpu, void *dir)
task_list[cpu][0].syscall=false;
task_list[cpu][0].thread=false;
task_list[cpu][0].vmem=dir;
- task_list[cpu][0].esp = VMEM_CPU_STACK_TOP-0x200;
+ task_list[cpu][0].esp = VMEM_CPU_STACK_TOP-0x200-8;
task_list[cpu][0].esp0 = 0; // esp0 not needed by kernel space tasks
fd_init_std_streams(task_list[cpu][0].pid,0);
@@ -92,7 +92,7 @@ volatile void scheduler_init(uint32_t cpu, void *dir)
task_list[cpu][1].thread=false;
task_list[cpu][1].syscall=false;
task_list[cpu][1].vmem=dir;
- task_list[cpu][1].esp = kballoc(4)+4*4096-0x200; // 4 pages stack
+ task_list[cpu][1].esp = kballoc(4)+4*4096-0x200-8; // 4 pages stack & prealign
task_list[cpu][1].esp0 =kballoc(4)+4*4096; // esp0 not needed by kernel space tasks
fd_init_std_streams(task_list[cpu][1].pid,0);
@@ -104,7 +104,7 @@ volatile void scheduler_init(uint32_t cpu, void *dir)
task_list[cpu][2].thread=false;
task_list[cpu][2].syscall=false;
task_list[cpu][2].vmem=dir;
- task_list[cpu][2].esp = kballoc(4)+4*4096-0x200; // 4 pages stack
+ task_list[cpu][2].esp = kballoc(4)+4*4096-0x200-8; // 4 pages stack & prealign
task_list[cpu][2].esp0 =kballoc(4)+4*4096; // esp0 not needed by kernel space tasks
fd_init_std_streams(task_list[cpu][2].pid,0);