-/* $Id: mminit.c,v 1.55 2003/10/12 17:05:48 hbirr Exp $
+/* $Id: mminit.c,v 1.56 2003/11/16 15:19:28 hbirr Exp $
*
* COPYRIGHT: See COPYING in the top directory
* PROJECT: ReactOS kernel
static MEMORY_AREA* kernel_text_desc = NULL;
static MEMORY_AREA* kernel_init_desc = NULL;
static MEMORY_AREA* kernel_map_desc = NULL;
+static MEMORY_AREA* kernel_kpcr_desc = NULL;
static MEMORY_AREA* kernel_data_desc = NULL;
static MEMORY_AREA* kernel_param_desc = NULL;
static MEMORY_AREA* kernel_pool_desc = NULL;
FALSE,
FALSE);
+ BaseAddress = (PVOID)KPCR_BASE;
+ MmCreateMemoryArea(NULL,
+ MmGetKernelAddressSpace(),
+ MEMORY_AREA_SYSTEM,
+ &BaseAddress,
+ PAGE_SIZE * MAXIMUM_PROCESSORS,
+ 0,
+ &kernel_kpcr_desc,
+ FALSE,
+ FALSE);
BaseAddress = (PVOID)KERNEL_BASE;
Length = PAGE_ROUND_UP(((ULONG)&_text_end__)) - KERNEL_BASE;
ParamLength = ParamLength - Length;
MmStats.NrTotalPages += 256;
}
#ifdef BIOS_MEM_FIX
- MmStats.NrTotalPages += 16;
+ MmStats.NrTotalPages += 16;
#endif
DbgPrint("Used memory %dKb\n", (MmStats.NrTotalPages * PAGE_SIZE) / 1024);
- LastKernelAddress = (ULONG)MmInitializePageList(
- (PVOID)FirstKrnlPhysAddr,
- (PVOID)LastKrnlPhysAddr,
- MmStats.NrTotalPages,
- PAGE_ROUND_UP(LastKernelAddress),
- BIOSMemoryMap,
- AddressRangeCount);
+ LastKernelAddress = (ULONG)MmInitializePageList((PVOID)FirstKrnlPhysAddr,
+ (PVOID)LastKrnlPhysAddr,
+ MmStats.NrTotalPages,
+ PAGE_ROUND_UP(LastKernelAddress),
+ BIOSMemoryMap,
+ AddressRangeCount);
kernel_len = LastKrnlPhysAddr - FirstKrnlPhysAddr;
/*
MmSetPageProtect(NULL,
(PVOID)i,
PAGE_EXECUTE_READ);
- }
+ }
DPRINT("Invalidating between %x and %x\n",
LastKernelAddress,
- KERNEL_BASE + 2 * PAGE_TABLE_SIZE);
- for (i=(LastKernelAddress);
- i<(KERNEL_BASE + 2 * PAGE_TABLE_SIZE);
- i=i+PAGE_SIZE)
+ 0xc0600000);
+ for (i=(LastKernelAddress); i<0xc0600000; i+=PAGE_SIZE)
{
MmRawDeleteVirtualMapping((PVOID)(i));
}
DPRINT("Almost done MmInit()\n");
#ifndef MP
/* FIXME: This is broken in SMP mode */
- MmDeleteVirtualMapping(NULL, (PVOID)&unmap_me, FALSE, NULL, NULL);
- MmDeleteVirtualMapping(NULL, (PVOID)&unmap_me2, FALSE, NULL, NULL);
- MmDeleteVirtualMapping(NULL, (PVOID)&unmap_me3, FALSE, NULL, NULL);
+ MmDeleteVirtualMapping(NULL, (PVOID)&unmap_me, TRUE, NULL, NULL);
+ MmDeleteVirtualMapping(NULL, (PVOID)&unmap_me2, TRUE, NULL, NULL);
+ MmDeleteVirtualMapping(NULL, (PVOID)&unmap_me3, TRUE, NULL, NULL);
#endif
/*
* Intialize memory areas
VOID INIT_FUNCTION
MmInit2(VOID)
{
+ MmInitializeRmapList();
+ MmInitializePageOp();
MmInitSectionImplementation();
MmInitPagingFile();
}
MmDeletePageTable(NULL, 0);
#endif
MmInitZeroPageThread();
- MmInitPagerThread();
MmCreatePhysicalMemorySection();
- MmInitializeRmapList();
- MmInitializePageOp();
+ MiInitBalancerThread();
/*
* Initialise the modified page writer.