void cstart(unsigned long magic, unsigned long addr);
tss_t tss[NUM_GDT];
+struct desc_struct ldt[3];
int manage_tss[NUM_GDT];
unsigned int esp_addr_tss[NUM_GDT];
void init_tss_all(void)
{
- set_segmdesc(&gdt[4], 103, (int) &cstart, AR_TSS32);
+ 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],103,(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;