Fix SYSENTER support in VMware. New benchmar: 200ms. ***70%*** faster
then with Int2E. Fix FPU save bug/explorer bug. Fix Vmware 4.0 crash
bug. HARTMUT IS A GENIUS.
Modified: trunk/reactos/ntoskrnl/ke/i386/syscall.S
Modified: trunk/reactos/subsys/system/vmwinst/vmwinst.c
Deleted: trunk/reactos/win32k.S
_____
Modified: trunk/reactos/ntoskrnl/ke/i386/syscall.S
--- trunk/reactos/ntoskrnl/ke/i386/syscall.S 2005-01-18 02:12:45 UTC
(rev 13106)
+++ trunk/reactos/ntoskrnl/ke/i386/syscall.S 2005-01-18 03:28:00 UTC
(rev 13107)
@@ -26,14 +26,14 @@
.globl _KiSystemService
_KiFastCallEntry:
-
+
/* Set FS to PCR */
movl $PCR_SELECTOR, %ecx
movw %cx, %fs
-
+
/* Set the current stack to Kernel Stack */
movl %fs:KPCR_TSS, %ecx
- movl KTSS_ESP0(%ecx), %ecx
+ movl %ss:KTSS_ESP0(%ecx), %ecx
movl %ecx, %esp
/* Set up a fake INT Stack. */
@@ -205,7 +205,7 @@
/* Save pointer to Trap Frame */
movl %esp, %ebx
- /* Raise IRQL to HIGH_LEVEL */
+ /* Raise IRQL to APC_LEVEL */
movl $1, %ecx
call @KfRaiseIrql@4
_____
Modified: trunk/reactos/subsys/system/vmwinst/vmwinst.c
--- trunk/reactos/subsys/system/vmwinst/vmwinst.c 2005-01-18
02:12:45 UTC (rev 13106)
+++ trunk/reactos/subsys/system/vmwinst/vmwinst.c 2005-01-18
03:28:00 UTC (rev 13107)
@@ -316,43 +316,6 @@
}
BOOL
-DisableFastSystemCall(VOID)
-{
- DWORD Value = 1;
- HKEY hReg;
-
- /* Open or Create the Kernel Settings Key */
- if(RegCreateKeyEx(HKEY_LOCAL_MACHINE,
- L"SYSTEM\\CurrentControlSet\\Control\\Session
Manager\\Kernel",
- 0,
- NULL,
- REG_OPTION_NON_VOLATILE,
- KEY_SET_VALUE,
- NULL,
- &hReg,
- NULL) != ERROR_SUCCESS) {
- DbgPrint("Failed to Disable Sysenter\n");
- return FALSE;
- }
-
- /* Disable Fast System Call */
- if(RegSetValueEx(hReg,
- L"FastSystemCallDisable",
- 0,
- REG_DWORD,
- (BYTE*)&Value,
- sizeof(DWORD)) != ERROR_SUCCESS) {
- RegCloseKey(hReg);
- DbgPrint("Failed to Disable Sysenter\n");
- return FALSE;
- }
-
- /* Return Success */
- RegCloseKey(hReg);
- return TRUE;
-}
-
-BOOL
EnableDriver(WCHAR *Key, BOOL Enable)
{
DWORD Value;
@@ -1061,9 +1024,6 @@
/* restore the exception handler */
SetUnhandledExceptionFilter(OldHandler);
- /* Disable Fast System Call no matter what */
- DisableFastSystemCall();
-
lc = DestinationPath;
lc += GetSystemDirectory(DestinationPath, MAX_PATH) - 1;
if(lc >= DestinationPath && *lc != L'\\')
_____
Deleted: trunk/reactos/win32k.S
--- trunk/reactos/win32k.S 2005-01-18 02:12:45 UTC (rev 13106)
+++ trunk/reactos/win32k.S 2005-01-18 03:28:00 UTC (rev 13107)
@@ -1 +0,0 @@
-#include "../gdi32/misc/win32k.c"