From 9acb4d60a348db1bcaaba4fad44e2a7105d9c579 Mon Sep 17 00:00:00 2001 From: Miguel Date: Wed, 22 Aug 2018 02:37:42 +0200 Subject: tss works finally (for one usertask!) --- kernel/usermode.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'kernel/usermode.c') diff --git a/kernel/usermode.c b/kernel/usermode.c index bb614d0..c700a61 100644 --- a/kernel/usermode.c +++ b/kernel/usermode.c @@ -23,12 +23,20 @@ void install_tss(int cpu_no){ // now fill each value // set values necessary sys_tss.ss0 = 0x10; //kernel data - sys_tss.esp0 = kballoc(4); + sys_tss.esp0 = kballoc(4)+4095; + log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"esp0 =0x%08X ",sys_tss.esp0); // now set the IO bitmap (not necessary, so set above limit) // sys_tss.iomap = ( unsigned short ) sizeof( tss_struct ); } +void initfunc() +{ + while(1) + { + c2++; + } +} void userfunc() { @@ -38,11 +46,7 @@ void userfunc() // if we are pid 0, replace ourselves with /bin/init TODO: switch to usermode before! if(task_get_current_pid()==0) { - //usermode(&initfunc); - while(1) - { - c2++; - } + usermode(&initfunc); } // kernel worker thread on pid1 -- cgit v1.2.3