OSDN Git Service

Merge branch 'master' of git.sourceforge.jp:/gitroot/vaneos/vaneosmain
authorvosystems <doradora.motochan@gmail.com>
Sat, 15 Nov 2014 03:16:11 +0000 (12:16 +0900)
committervosystems <doradora.motochan@gmail.com>
Sat, 15 Nov 2014 03:16:11 +0000 (12:16 +0900)
Kernel/TSS.c
Kernel/Task.S
Kernel/boot.c
bin/Kernel.vsb

index adaf912..c472429 100644 (file)
@@ -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;
        
index 3caa989..1eb2f67 100644 (file)
@@ -10,7 +10,7 @@ farjmp:
        RET
 
 taskswitch5:
-       JMP 6*8:0
+       JMP 5*8:0
        RET
 
 task_switch:
index 7678212..4797146 100644 (file)
@@ -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){
index cfead45..ff18043 100755 (executable)
Binary files a/bin/Kernel.vsb and b/bin/Kernel.vsb differ