From: vosystems Date: Sat, 15 Nov 2014 03:16:11 +0000 (+0900) Subject: Merge branch 'master' of git.sourceforge.jp:/gitroot/vaneos/vaneosmain X-Git-Url: http://git.osdn.net/view?p=vaneos%2Fvaneosmain.git;a=commitdiff_plain;h=ce2750abf5310aef88112615a9111a3639586076;hp=f76349f4e2ec34ecadd4acd2fd855ea479efe4a6 Merge branch 'master' of git.sourceforge.jp:/gitroot/vaneos/vaneosmain --- diff --git a/Kernel/TSS.c b/Kernel/TSS.c index adaf912..c472429 100644 --- a/Kernel/TSS.c +++ b/Kernel/TSS.c @@ -34,10 +34,7 @@ static void set_segmdesc(SEGMENT_DESCRIPTOR *sd, unsigned int limit, int base, i void init_tss_all(void) { - set_segmdesc(&gdt[4], 104, (int) &cstart, AR_TSS32); - //set_tss_desc(&gdt[FIRST_TSS_ENTRY],tss); - //set_ldt_desc(gdt[FIRST_LDT_ENTRY,&ldt); - ltr(0); + set_segmdesc(&gdt[4], 103, (int) &tss[0], AR_TSS32); } int k_mktask_tss(void (*f)()) @@ -47,7 +44,7 @@ int k_mktask_tss(void (*f)()) tss[free].ldtr=0; tss[free].iomap=0x40000000; - set_segmdesc(&gdt[free],104,(int)&task_b,AR_TSS32); + set_segmdesc(&gdt[free],103,(int)&tss[free],AR_TSS32); return free; } @@ -56,7 +53,7 @@ void k_init_tss(int num) { num=5; - tss[num].eip=&task_b; + tss[num].eip=task_b; tss[num].esp=k_malloc_mask(64*1024)+64*1024; tss[num].eflags=0x00000202; diff --git a/Kernel/Task.S b/Kernel/Task.S index 3caa989..1eb2f67 100644 --- a/Kernel/Task.S +++ b/Kernel/Task.S @@ -10,7 +10,7 @@ farjmp: RET taskswitch5: - JMP 6*8:0 + JMP 5*8:0 RET task_switch: diff --git a/Kernel/boot.c b/Kernel/boot.c index 7678212..4797146 100644 --- a/Kernel/boot.c +++ b/Kernel/boot.c @@ -155,15 +155,15 @@ void cstart(unsigned long magic, unsigned long addr) cr();cr(); ChangeDir("VaneRoot/"); - /* - init_task(); - */ - init_tss_all();/* + + //init_task(); + + init_tss_all(); int bnum=k_mktask_tss(&task_b); load_tr(4*8); k_init_tss(bnum); - */ - k_mktask(task_b); + + //k_mktask(task_b); do{ ShowPrompt();//puts("\nKernelShell/Root/>"); scan_str(cmd,sizeof(cmd)/sizeof(cmd[0])); @@ -198,10 +198,10 @@ void cstart(unsigned long magic, unsigned long addr) k_mktask(task_b); switch_task_2( TASK_INFO_ADDR, TASK_INFO_ADDR + sizeof( TaskInfo ) );*/ - /*farjmp(0,5*8);*/ - + //farjmp(0,5*8); + task_switch(); //INT_CALL(0x31); - __asm__ __volatile__("INT 0x31"); + //__asm__ __volatile__("INT 0x31"); }else if(strcmp("root",cmd)==0){ if(admin_flag==0){ diff --git a/bin/Kernel.vsb b/bin/Kernel.vsb index cfead45..ff18043 100755 Binary files a/bin/Kernel.vsb and b/bin/Kernel.vsb differ