- 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