/* INCLUDES *****************************************************************/\r
\r
#include <ntoskrnl.h>\r
-#include <reactos/ppcboot.h>\r
\r
#define NDEBUG\r
#include <debug.h>\r
-#include <ppcdebug.h>\r
#include "ppcmmu/mmu.h"\r
\r
/* GLOBALS *******************************************************************/\r
extern ULONG KeLoaderModuleCount;\r
extern ULONG_PTR MmFreeLdrLastKernelAddress;\r
KPRCB PrcbData[MAXIMUM_PROCESSORS];\r
+/* BIOS Memory Map. Not NTLDR-compliant yet */\r
+extern ULONG KeMemoryMapRangeCount;\r
+extern ADDRESS_RANGE KeMemoryMap[64];\r
\r
/* FUNCTIONS *****************************************************************/\r
\r
IN PVOID IdleStack,\r
IN PKPRCB Prcb,\r
IN CCHAR Number,\r
- IN PROS_LOADER_PARAMETER_BLOCK LoaderBlock)\r
+ IN PLOADER_PARAMETER_BLOCK LoaderBlock)\r
{\r
ULONG FeatureBits;\r
LARGE_INTEGER PageDirectory;\r
PVOID DpcStack;\r
- boot_infos_t *BootInfo = ((boot_infos_t *)LoaderBlock->ArchExtra);\r
-\r
-#ifdef _M_PPC\r
- /* Set the machine type in LoaderBlock for HAL */\r
- KeLoaderBlock->u.PowerPC.MachineType = BootInfo->machineType;\r
-#endif\r
\r
/* Detect and set the CPU Type */\r
KiSetProcessorType();\r
InitThread->Affinity = 1 << Number;\r
InitThread->WaitIrql = DISPATCH_LEVEL;\r
InitProcess->ActiveProcessors = 1 << Number;\r
+ \r
+ /* HACK for MmUpdatePageDir */\r
+ ((PETHREAD)InitThread)->ThreadsProcess = (PEPROCESS)InitProcess;\r
\r
/* Set up the thread-related fields in the PRCB */\r
- //Prcb->CurrentThread = InitThread;\r
+ Prcb->CurrentThread = InitThread;\r
Prcb->NextThread = NULL;\r
- //Prcb->IdleThread = InitThread;\r
+ Prcb->IdleThread = InitThread;\r
\r
+ /* Initialize Kernel Memory Address Space */\r
+ MmInit1(MmFreeLdrFirstKrnlPhysAddr,\r
+ MmFreeLdrLastKrnlPhysAddr,\r
+ MmFreeLdrLastKernelAddress,\r
+ KeMemoryMap,\r
+ KeMemoryMapRangeCount,\r
+ 4096);\r
+\r
+ DPRINT1("\n");\r
/* Initialize the Kernel Executive */\r
- ExpInitializeExecutive(0, (PLOADER_PARAMETER_BLOCK)LoaderBlock);\r
+ ExpInitializeExecutive(0, LoaderBlock);\r
\r
+ DPRINT1("\n");\r
/* Only do this on the boot CPU */\r
if (!Number)\r
{\r
+ DPRINT1("\n");\r
/* Calculate the time reciprocal */\r
KiTimeIncrementReciprocal =\r
KiComputeReciprocal(KeMaximumIncrement,\r
&KiTimeIncrementShiftCount);\r
\r
+ DPRINT1("\n");\r
/* Update DPC Values in case they got updated by the executive */\r
Prcb->MaximumDpcQueueDepth = KiMaximumDpcQueueDepth;\r
Prcb->MinimumDpcRate = KiMinimumDpcRate;\r
Prcb->AdjustDpcThreshold = KiAdjustDpcThreshold;\r
\r
+ DPRINT1("\n");\r
/* Allocate the DPC Stack */\r
DpcStack = MmCreateKernelStack(FALSE, 0);\r
if (!DpcStack) KeBugCheckEx(NO_PAGES_AVAILABLE, 1, 0, 0, 0);\r
/* Free Initial Memory */\r
// MiFreeInitMemory();\r
\r
+ DPRINT1("\n");\r
/* Setup decrementer exception */\r
KiSetupDecrementerTrap();\r
\r
+ DPRINT1("\n");\r
while (1)\r
{\r
LARGE_INTEGER Timeout;\r
Timeout.QuadPart = 0x7fffffffffffffffLL;\r
+ DPRINT1("\n");\r
KeDelayExecutionThread(KernelMode, FALSE, &Timeout);\r
}\r
}\r
\r
/* Skip initial setup if this isn't the Boot CPU */\r
if (Cpu) goto AppCpuInit;\r
-\r
+ \r
/* Initialize the PCR */\r
RtlZeroMemory(Pcr, PAGE_SIZE);\r
KiInitializePcr(Cpu,\r