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)())
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;
}
{
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;
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]));
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){