- Fixed the sysexit check. We must use a kernel mode segment to access KiFastSystemCallDisable. - Fixed some segment limits. Modified: trunk/reactos/ntoskrnl/ke/i386/gdt.c Modified: trunk/reactos/ntoskrnl/ke/i386/syscall.S _____
Modified: trunk/reactos/ntoskrnl/ke/i386/gdt.c --- trunk/reactos/ntoskrnl/ke/i386/gdt.c 2005-01-17 16:27:28 UTC (rev 13099) +++ trunk/reactos/ntoskrnl/ke/i386/gdt.c 2005-01-17 19:22:03 UTC (rev 13100) @@ -40,11 +40,16 @@
0x0, 0x0, 0x0, 0x0, /* Null */ 0xffff, 0x0, 0x9a00, 0xcf, /* Kernel CS */ 0xffff, 0x0, 0x9200, 0xcf, /* Kernel DS */ - 0x0, 0x0, 0xfa00, 0xcf, /* User CS */ - 0x0, 0x0, 0xf200, 0xcf, /* User DS */ +#ifdef __3GB__ + 0xffff, 0x0, 0xfa00, 0xcb, /* User CS */ + 0xffff, 0x0, 0xf200, 0xcb, /* User DS */ +#else + 0xffff, 0x0, 0xfa00, 0xc7, /* User CS */ + 0xffff, 0x0, 0xf200, 0xc7, /* User DS */ +#endif 0x0, 0x0, 0x0, 0x0, /* TSS */ - 0x1000, 0x0000, 0x9200, 0xffc0, /* PCR */ - 0x1000, 0x0, 0xf200, 0x0, /* TEB */ + 0x0fff, 0x0000, 0x9200, 0xff00, /* PCR */ + 0x0fff, 0x0, 0xf200, 0x0, /* TEB */ 0x0, 0x0, 0x0, 0x0, /* Reserved */ 0x0, 0x0, 0x0, 0x0, /* LDT */ 0x0, 0x0, 0x0, 0x0 /* Trap TSS */ _____
Modified: trunk/reactos/ntoskrnl/ke/i386/syscall.S --- trunk/reactos/ntoskrnl/ke/i386/syscall.S 2005-01-17 16:27:28 UTC (rev 13099) +++ trunk/reactos/ntoskrnl/ke/i386/syscall.S 2005-01-17 19:22:03 UTC (rev 13100) @@ -270,8 +270,8 @@
FastRet:
/* Is SYSEXIT Supported/Wanted? */ - cmpl $1, _KiFastSystemCallDisable - je IntRet + cmpl $0, %ss:_KiFastSystemCallDisable + jnz IntRet
/* Restore FS to TIB */ mov $TEB_SELECTOR, %ecx