Ki386InitializeTss(IN PKTSS Tss,\r
IN PKIDTENTRY Idt)\r
{\r
- PKGDTENTRY TssEntry;\r
- PKIDTENTRY TaskGateEntry;\r
- PKIDT_ACCESS TaskGateAccess;\r
+ PKGDTENTRY TssEntry, TaskGateEntry;\r
\r
/* Initialize the boot TSS. */\r
TssEntry = &KiBootGdt[KGDT_TSS / sizeof(KGDTENTRY)];\r
+ TssEntry->HighWord.Bits.Type = I386_TSS;\r
+ TssEntry->HighWord.Bits.Pres = 1;\r
+ TssEntry->HighWord.Bits.Dpl = 0;\r
KiInitializeTSS2(Tss, TssEntry);\r
KiInitializeTSS(Tss);\r
\r
Ke386SetTr(KGDT_TSS);\r
\r
/* Setup the Task Gate for Double Fault Traps */\r
- TaskGateEntry = &Idt[8];\r
- TaskGateAccess = (PKIDT_ACCESS)&TaskGateEntry->Access;\r
-#if 0\r
- TaskGateAccess->SegmentType = I386_TASK_GATE;\r
- TaskGateAccess->Present = 1;\r
- TaskGateAccess->Dpl = 0;\r
- TaskGateEntry->Selector = KGDT_DF_TSS;\r
-#endif\r
+ TaskGateEntry = (PKGDTENTRY)&Idt[8];\r
+ TaskGateEntry->HighWord.Bits.Type = I386_TASK_GATE;\r
+ TaskGateEntry->HighWord.Bits.Pres = 1;\r
+ TaskGateEntry->HighWord.Bits.Dpl = 0;\r
+ ((PKIDTENTRY)TaskGateEntry)->Selector = KGDT_DF_TSS;\r
\r
/* Initialize the TSS used for handling double faults. */\r
Tss = (PKTSS)KiDoubleFaultTSS;\r
TssEntry->LimitLow = KTSS_IO_MAPS;\r
\r
/* Now setup the NMI Task Gate */\r
- TaskGateEntry = &Idt[2];\r
- TaskGateAccess = (PKIDT_ACCESS)&TaskGateEntry->Access;\r
-#if 0\r
- TaskGateAccess->SegmentType = I386_TASK_GATE;\r
- TaskGateAccess->Present = 1;\r
- TaskGateEntry->Selector = KGDT_NMI_TSS;\r
-#endif\r
+ TaskGateEntry = (PKGDTENTRY)&Idt[2];\r
+ TaskGateEntry->HighWord.Bits.Type = I386_TASK_GATE;\r
+ TaskGateEntry->HighWord.Bits.Pres = 1;\r
+ TaskGateEntry->HighWord.Bits.Dpl = 0;\r
+ ((PKIDTENTRY)TaskGateEntry)->Selector = KGDT_NMI_TSS;\r
\r
/* Initialize the actual TSS */\r
Tss = (PKTSS)KiNMITSS;\r