- Fix KiDispatchException to unmask KI_EXCEPTION_INTERNAL when setting the exception...
[reactos.git] / reactos / ntoskrnl / ex / init.c
index 0112e79..268c21c 100644 (file)
 #include <debug.h>
 //#include <ntoskrnl/cm/newcm.h>
 #include "ntoskrnl/cm/cm.h"
+#include <ntverp.h>
 
 /* DATA **********************************************************************/
 
-#define BUILD_OSCSDVERSION(major, minor) (((major & 0xFF) << 8) | (minor & 0xFF))
-
 /* NT Version Info */
-ULONG NtMajorVersion = 5;
-ULONG NtMinorVersion = 0;
-ULONG NtOSCSDVersion = BUILD_OSCSDVERSION(4, 0);
-ULONG NtBuildNumber = KERNEL_VERSION_BUILD;
+ULONG NtMajorVersion = VER_PRODUCTMAJORVERSION;
+ULONG NtMinorVersion = VER_PRODUCTMINORVERSION;
+#if DBG
+ULONG NtBuildNumber = VER_PRODUCTBUILD | 0xC0000000;
+#else
+ULONG NtBuildNumber = VER_PRODUCTBUILD;
+#endif
+
+/* NT System Info */
 ULONG NtGlobalFlag;
 ULONG ExSuiteMask;
 
+/* Cm Version Info */
+ULONG CmNtSpBuildNumber;
+ULONG CmNtCSDVersion;
+ULONG CmNtCSDReleaseType;
+UNICODE_STRING CmVersionString;
+UNICODE_STRING CmCSDVersionString;
+CHAR NtBuildLab[] = KERNEL_VERSION_BUILD_STR;
+
 /* Init flags and settings */
 ULONG ExpInitializationPhase;
 BOOLEAN ExpInTextModeSetup;
@@ -671,11 +683,12 @@ ExpLoadBootSymbols(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
                 else
                 {
                     /* Copy the name */
-                    for (Count = 0; Count < Length; Count++, Name++)
+                    Count = 0;
+                    do
                     {
                         /* Copy the character */
-                        NameBuffer[Count] = (CHAR)*Name;
-                    }
+                        NameBuffer[Count++] = (CHAR)*Name++;
+                    } while (Count < Length);
 
                     /* Null-terminate */
                     NameBuffer[Count] = ANSI_NULL;
@@ -692,13 +705,14 @@ ExpLoadBootSymbols(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
                 {
                     /* Buffer too small */
                     OverFlow = TRUE;
+                    while (TRUE);
                 }
                 else
                 {
                     /* Otherwise build the name. HACKED for GCC :( */
                     sprintf(NameBuffer,
-                            "%c\\System32\\Drivers\\%S",
-                            SharedUserData->NtSystemRoot[2],
+                            "%S\\System32\\Drivers\\%S",
+                            &SharedUserData->NtSystemRoot[2],
                             LdrEntry->BaseDllName.Buffer);
                 }
             }
@@ -896,6 +910,9 @@ ExpInitializeExecutive(IN ULONG Cpu,
     /* Initialize the executive at phase 0 */
     if (!ExInitSystem()) KEBUGCHECK(PHASE0_INITIALIZATION_FAILED);
 
+    /* Initialize the memory manager at phase 0 */
+    if (!MmInitSystem(0, LoaderBlock)) KeBugCheck(MEMORY1_INITIALIZATION_FAILED);
+
     /* Load boot symbols */
     ExpLoadBootSymbols(LoaderBlock);
 
@@ -1155,7 +1172,7 @@ Phase1InitializationDiscard(PVOID Context)
     HalReportResourceUsage();
 
     /* Call the debugger DLL once we have KD64 6.0 support */
-    KdDebuggerInitialize1(LoaderBlock);
+    //KdDebuggerInitialize1(LoaderBlock);
 
     /* Setup PnP Manager in phase 1 */
     if (!PpInitSystem()) KeBugCheck(PP1_INITIALIZATION_FAILED);