- Do MmInit1 in KiInitializeKernel so we can access SharedUserData from it (we'll need to setup the CPU Features there).

- Cleanup some external/prototype mess and put them nicely into headers.

svn path=/trunk/; revision=24351
This commit is contained in:
Alex Ionescu 2006-10-01 19:43:18 +00:00
parent 3d9d36ccff
commit 2855e1f08f
5 changed files with 28 additions and 61 deletions

View file

@ -24,35 +24,18 @@ ULONG NtOSCSDVersion = BUILD_OSCSDVERSION(4, 0);
ULONG NtBuildNumber = KERNEL_VERSION_BUILD; ULONG NtBuildNumber = KERNEL_VERSION_BUILD;
ULONG NtGlobalFlag = 0; ULONG NtGlobalFlag = 0;
ULONG InitSafeBootMode = 0; /* KB83764 */
extern ULONG MmCoreDumpType; extern ULONG MmCoreDumpType;
extern CHAR KiTimerSystemAuditing;
extern PVOID Ki386InitialStackArray[MAXIMUM_PROCESSORS];
extern ADDRESS_RANGE KeMemoryMap[64];
extern ULONG KeMemoryMapRangeCount;
extern ULONG_PTR FirstKrnlPhysAddr;
extern ULONG_PTR LastKrnlPhysAddr;
extern ULONG_PTR LastKernelAddress;
extern LOADER_MODULE KeLoaderModules[64]; extern LOADER_MODULE KeLoaderModules[64];
extern ULONG KeLoaderModuleCount; extern ULONG KeLoaderModuleCount;
extern PRTL_MESSAGE_RESOURCE_DATA KiBugCodeMessages; extern PRTL_MESSAGE_RESOURCE_DATA KiBugCodeMessages;
BOOLEAN NoGuiBoot = FALSE; BOOLEAN NoGuiBoot = FALSE;
static BOOLEAN BootLog = FALSE;
static ULONG MaxMem = 0;
static BOOLEAN ForceAcpiDisable = FALSE; static BOOLEAN ForceAcpiDisable = FALSE;
BOOLEAN
NTAPI
PspInitPhase0(
VOID
);
/* Init flags and settings */ /* Init flags and settings */
ULONG ExpInitializationPhase; ULONG ExpInitializationPhase;
BOOLEAN ExpInTextModeSetup; BOOLEAN ExpInTextModeSetup;
BOOLEAN IoRemoteBootClient; BOOLEAN IoRemoteBootClient;
ULONG InitSafeBootMode;
/* Boot NLS information */ /* Boot NLS information */
PVOID ExpNlsTableBase; PVOID ExpNlsTableBase;
@ -251,9 +234,7 @@ InitSystemSharedUserPage (PCSZ ParameterLine)
__inline __inline
VOID VOID
STDCALL STDCALL
ParseCommandLine(PULONG MaxMem, ParseCommandLine(PBOOLEAN NoGuiBoot,
PBOOLEAN NoGuiBoot,
PBOOLEAN BootLog,
PBOOLEAN ForceAcpiDisable) PBOOLEAN ForceAcpiDisable)
{ {
PCHAR p1, p2; PCHAR p1, p2;
@ -262,26 +243,7 @@ ParseCommandLine(PULONG MaxMem,
while(*p1 && (p2 = strchr(p1, '/'))) { while(*p1 && (p2 = strchr(p1, '/'))) {
p2++; p2++;
if (!_strnicmp(p2, "MAXMEM", 6)) { if (!_strnicmp(p2, "NOGUIBOOT", 9)) {
p2 += 6;
while (isspace(*p2)) p2++;
if (*p2 == '=') {
p2++;
while(isspace(*p2)) p2++;
if (isdigit(*p2)) {
while (isdigit(*p2)) {
*MaxMem = *MaxMem * 10 + *p2 - '0';
p2++;
}
break;
}
}
} else if (!_strnicmp(p2, "NOGUIBOOT", 9)) {
p2 += 9; p2 += 9;
*NoGuiBoot = TRUE; *NoGuiBoot = TRUE;
@ -301,10 +263,6 @@ ParseCommandLine(PULONG MaxMem,
MmCoreDumpType = MM_CORE_DUMP_TYPE_NONE; MmCoreDumpType = MM_CORE_DUMP_TYPE_NONE;
} }
} }
} else if (!_strnicmp(p2, "BOOTLOG", 7)) {
p2 += 7;
*BootLog = TRUE;
} else if (!_strnicmp(p2, "NOACPI", 6)) { } else if (!_strnicmp(p2, "NOACPI", 6)) {
p2 += 6; p2 += 6;
@ -514,19 +472,8 @@ ExpInitializeExecutive(IN ULONG Cpu,
{ {
PNLS_DATA_BLOCK NlsData; PNLS_DATA_BLOCK NlsData;
/* Initialize Kernel Memory Address Space */
MmInit1(FirstKrnlPhysAddr,
LastKrnlPhysAddr,
LastKernelAddress,
(PADDRESS_RANGE)&KeMemoryMap,
KeMemoryMapRangeCount,
MaxMem > 8 ? MaxMem : 4096);
/* Sets up the Text Sections of the Kernel and HAL for debugging */
LdrInit1();
/* Parse Command Line Settings */ /* Parse Command Line Settings */
ParseCommandLine(&MaxMem, &NoGuiBoot, &BootLog, &ForceAcpiDisable); ParseCommandLine(&NoGuiBoot, &ForceAcpiDisable);
/* FIXME: Deprecate soon */ /* FIXME: Deprecate soon */
ParseAndCacheLoadedModules(); ParseAndCacheLoadedModules();
@ -726,7 +673,7 @@ ExPhase2Init(PVOID Context)
DbgBreakPoint(); DbgBreakPoint();
/* Setup Drivers and Root Device Node */ /* Setup Drivers and Root Device Node */
IoInit2(BootLog); IoInit2(FALSE);
/* Display the boot screen image if not disabled */ /* Display the boot screen image if not disabled */
if (!NoGuiBoot) InbvEnableBootDriver(TRUE); if (!NoGuiBoot) InbvEnableBootDriver(TRUE);
@ -826,7 +773,6 @@ ExPhase2Init(PVOID Context)
} }
/* Enable the Clock, close remaining handles */ /* Enable the Clock, close remaining handles */
KiTimerSystemAuditing = 1;
ZwClose(ThreadHandle); ZwClose(ThreadHandle);
ZwClose(ProcessHandle); ZwClose(ProcessHandle);

View file

@ -67,6 +67,12 @@ struct _KPCR;
struct _KPRCB; struct _KPRCB;
struct _KEXCEPTION_FRAME; struct _KEXCEPTION_FRAME;
extern ADDRESS_RANGE KeMemoryMap[64];
extern ULONG KeMemoryMapRangeCount;
extern ULONG_PTR FirstKrnlPhysAddr;
extern ULONG_PTR LastKrnlPhysAddr;
extern ULONG_PTR LastKernelAddress;
extern PVOID KeUserApcDispatcher; extern PVOID KeUserApcDispatcher;
extern PVOID KeUserCallbackDispatcher; extern PVOID KeUserCallbackDispatcher;
extern PVOID KeUserExceptionDispatcher; extern PVOID KeUserExceptionDispatcher;

View file

@ -79,6 +79,12 @@ PspShutdownProcessManager(
VOID VOID
); );
BOOLEAN
NTAPI
PspInitPhase0(
VOID
);
// //
// Utility Routines // Utility Routines
// //

View file

@ -35,7 +35,6 @@ LARGE_INTEGER SystemBootTime = (LARGE_INTEGER)0LL;
LARGE_INTEGER SystemBootTime = { 0 }; LARGE_INTEGER SystemBootTime = { 0 };
#endif #endif
CHAR KiTimerSystemAuditing = 0;
KDPC KiExpireTimerDpc; KDPC KiExpireTimerDpc;
BOOLEAN KiClockSetupComplete = FALSE; BOOLEAN KiClockSetupComplete = FALSE;

View file

@ -11,7 +11,6 @@
#include <ntoskrnl.h> #include <ntoskrnl.h>
#define NDEBUG #define NDEBUG
#include <debug.h> #include <debug.h>
#include <intrin.h>
/* GLOBALS *******************************************************************/ /* GLOBALS *******************************************************************/
@ -164,6 +163,17 @@ KiInitializeKernel(IN PKPROCESS InitProcess,
DPRINT1("SMP Boot support not yet present\n"); DPRINT1("SMP Boot support not yet present\n");
} }
/* Initialize Kernel Memory Address Space */
MmInit1(FirstKrnlPhysAddr,
LastKrnlPhysAddr,
LastKernelAddress,
(PADDRESS_RANGE)&KeMemoryMap,
KeMemoryMapRangeCount,
4096);
/* Sets up the Text Sections of the Kernel and HAL for debugging */
LdrInit1();
/* Setup the Idle Thread */ /* Setup the Idle Thread */
KeInitializeThread(InitProcess, KeInitializeThread(InitProcess,
InitThread, InitThread,