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"