mirror of
https://github.com/reactos/reactos.git
synced 2024-10-30 11:35:58 +00:00
- Removed the initialisation of the kernel map area.
- Allocate the region for the paged and non paged pool at a 4MB boundary. - Protect the local and i/o apic by a memory area. svn path=/trunk/; revision=18754
This commit is contained in:
parent
293a3fe31b
commit
152111652c
|
@ -31,22 +31,10 @@ extern unsigned int _bss_end__;
|
||||||
static BOOLEAN IsThisAnNtAsSystem = FALSE;
|
static BOOLEAN IsThisAnNtAsSystem = FALSE;
|
||||||
static MM_SYSTEM_SIZE MmSystemSize = MmSmallSystem;
|
static MM_SYSTEM_SIZE MmSystemSize = MmSmallSystem;
|
||||||
|
|
||||||
static MEMORY_AREA* kernel_text_desc = NULL;
|
|
||||||
static MEMORY_AREA* kernel_init_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;
|
|
||||||
static MEMORY_AREA* kernel_shared_data_desc = NULL;
|
|
||||||
static MEMORY_AREA* kernel_mapped_vga_framebuffer_desc = NULL;
|
|
||||||
static MEMORY_AREA* MiKernelMapDescriptor = NULL;
|
|
||||||
static MEMORY_AREA* MiPagedPoolDescriptor = NULL;
|
|
||||||
|
|
||||||
PHYSICAL_ADDRESS MmSharedDataPagePhysicalAddress;
|
PHYSICAL_ADDRESS MmSharedDataPagePhysicalAddress;
|
||||||
|
|
||||||
PVOID MiNonPagedPoolStart;
|
PVOID MiNonPagedPoolStart;
|
||||||
ULONG MiNonPagedPoolLength;
|
ULONG MiNonPagedPoolLength;
|
||||||
//PVOID MiKernelMapStart;
|
|
||||||
|
|
||||||
extern ULONG init_stack;
|
extern ULONG init_stack;
|
||||||
extern ULONG init_stack_top;
|
extern ULONG init_stack_top;
|
||||||
|
@ -92,6 +80,7 @@ MmInitVirtualMemory(ULONG_PTR LastKernelAddress,
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
PHYSICAL_ADDRESS BoundaryAddressMultiple;
|
PHYSICAL_ADDRESS BoundaryAddressMultiple;
|
||||||
PFN_TYPE Pfn;
|
PFN_TYPE Pfn;
|
||||||
|
PMEMORY_AREA MArea;
|
||||||
|
|
||||||
DPRINT("MmInitVirtualMemory(%x, %x)\n",LastKernelAddress, KernelLength);
|
DPRINT("MmInitVirtualMemory(%x, %x)\n",LastKernelAddress, KernelLength);
|
||||||
|
|
||||||
|
@ -100,12 +89,16 @@ MmInitVirtualMemory(ULONG_PTR LastKernelAddress,
|
||||||
|
|
||||||
MmInitMemoryAreas();
|
MmInitMemoryAreas();
|
||||||
|
|
||||||
MiNonPagedPoolStart = (char*)LastKernelAddress + PAGE_SIZE;
|
/* Start the paged and nonpaged pool at a 4MB boundary. */
|
||||||
|
MiNonPagedPoolStart = (PVOID)ROUND_UP((ULONG_PTR)LastKernelAddress + PAGE_SIZE, 0x400000);
|
||||||
MiNonPagedPoolLength = MM_NONPAGED_POOL_SIZE;
|
MiNonPagedPoolLength = MM_NONPAGED_POOL_SIZE;
|
||||||
|
|
||||||
MmPagedPoolBase = (char*)MiNonPagedPoolStart + MiNonPagedPoolLength + PAGE_SIZE;
|
MmPagedPoolBase = (PVOID)ROUND_UP((ULONG_PTR)MiNonPagedPoolStart + MiNonPagedPoolLength + PAGE_SIZE, 0x400000);
|
||||||
MmPagedPoolSize = MM_PAGED_POOL_SIZE;
|
MmPagedPoolSize = MM_PAGED_POOL_SIZE;
|
||||||
|
|
||||||
|
DPRINT("NonPagedPool %x - %x, PagedPool %x - %x\n", MiNonPagedPoolStart, (ULONG_PTR)MiNonPagedPoolStart + MiNonPagedPoolLength - 1,
|
||||||
|
MmPagedPoolBase, (ULONG_PTR)MmPagedPoolBase + MmPagedPoolSize - 1);
|
||||||
|
|
||||||
MiInitializeNonPagedPool();
|
MiInitializeNonPagedPool();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -120,7 +113,33 @@ MmInitVirtualMemory(ULONG_PTR LastKernelAddress,
|
||||||
&BaseAddress,
|
&BaseAddress,
|
||||||
PAGE_SIZE * MAXIMUM_PROCESSORS,
|
PAGE_SIZE * MAXIMUM_PROCESSORS,
|
||||||
0,
|
0,
|
||||||
&kernel_kpcr_desc,
|
&MArea,
|
||||||
|
TRUE,
|
||||||
|
FALSE,
|
||||||
|
BoundaryAddressMultiple);
|
||||||
|
|
||||||
|
/* Local APIC base */
|
||||||
|
BaseAddress = (PVOID)0xFEE00000;
|
||||||
|
MmCreateMemoryArea(NULL,
|
||||||
|
MmGetKernelAddressSpace(),
|
||||||
|
MEMORY_AREA_SYSTEM,
|
||||||
|
&BaseAddress,
|
||||||
|
PAGE_SIZE,
|
||||||
|
0,
|
||||||
|
&MArea,
|
||||||
|
TRUE,
|
||||||
|
FALSE,
|
||||||
|
BoundaryAddressMultiple);
|
||||||
|
|
||||||
|
/* i/o APIC base */
|
||||||
|
BaseAddress = (PVOID)0xFEC00000;
|
||||||
|
MmCreateMemoryArea(NULL,
|
||||||
|
MmGetKernelAddressSpace(),
|
||||||
|
MEMORY_AREA_SYSTEM,
|
||||||
|
&BaseAddress,
|
||||||
|
PAGE_SIZE,
|
||||||
|
0,
|
||||||
|
&MArea,
|
||||||
TRUE,
|
TRUE,
|
||||||
FALSE,
|
FALSE,
|
||||||
BoundaryAddressMultiple);
|
BoundaryAddressMultiple);
|
||||||
|
@ -132,7 +151,7 @@ MmInitVirtualMemory(ULONG_PTR LastKernelAddress,
|
||||||
&BaseAddress,
|
&BaseAddress,
|
||||||
0x20000,
|
0x20000,
|
||||||
0,
|
0,
|
||||||
&kernel_mapped_vga_framebuffer_desc,
|
&MArea,
|
||||||
TRUE,
|
TRUE,
|
||||||
FALSE,
|
FALSE,
|
||||||
BoundaryAddressMultiple);
|
BoundaryAddressMultiple);
|
||||||
|
@ -151,7 +170,7 @@ MmInitVirtualMemory(ULONG_PTR LastKernelAddress,
|
||||||
&BaseAddress,
|
&BaseAddress,
|
||||||
Length,
|
Length,
|
||||||
0,
|
0,
|
||||||
&kernel_text_desc,
|
&MArea,
|
||||||
TRUE,
|
TRUE,
|
||||||
FALSE,
|
FALSE,
|
||||||
BoundaryAddressMultiple);
|
BoundaryAddressMultiple);
|
||||||
|
@ -168,7 +187,7 @@ MmInitVirtualMemory(ULONG_PTR LastKernelAddress,
|
||||||
&BaseAddress,
|
&BaseAddress,
|
||||||
Length,
|
Length,
|
||||||
0,
|
0,
|
||||||
&kernel_init_desc,
|
&MArea,
|
||||||
TRUE,
|
TRUE,
|
||||||
FALSE,
|
FALSE,
|
||||||
BoundaryAddressMultiple);
|
BoundaryAddressMultiple);
|
||||||
|
@ -190,7 +209,7 @@ MmInitVirtualMemory(ULONG_PTR LastKernelAddress,
|
||||||
&BaseAddress,
|
&BaseAddress,
|
||||||
Length,
|
Length,
|
||||||
0,
|
0,
|
||||||
&kernel_data_desc,
|
&MArea,
|
||||||
TRUE,
|
TRUE,
|
||||||
FALSE,
|
FALSE,
|
||||||
BoundaryAddressMultiple);
|
BoundaryAddressMultiple);
|
||||||
|
@ -203,7 +222,7 @@ MmInitVirtualMemory(ULONG_PTR LastKernelAddress,
|
||||||
&BaseAddress,
|
&BaseAddress,
|
||||||
Length,
|
Length,
|
||||||
0,
|
0,
|
||||||
&kernel_param_desc,
|
&MArea,
|
||||||
TRUE,
|
TRUE,
|
||||||
FALSE,
|
FALSE,
|
||||||
BoundaryAddressMultiple);
|
BoundaryAddressMultiple);
|
||||||
|
@ -215,19 +234,7 @@ MmInitVirtualMemory(ULONG_PTR LastKernelAddress,
|
||||||
&BaseAddress,
|
&BaseAddress,
|
||||||
MiNonPagedPoolLength,
|
MiNonPagedPoolLength,
|
||||||
0,
|
0,
|
||||||
&kernel_pool_desc,
|
&MArea,
|
||||||
TRUE,
|
|
||||||
FALSE,
|
|
||||||
BoundaryAddressMultiple);
|
|
||||||
|
|
||||||
BaseAddress = (PVOID)MM_KERNEL_MAP_BASE;
|
|
||||||
Status = MmCreateMemoryArea(NULL,
|
|
||||||
MmGetKernelAddressSpace(),
|
|
||||||
MEMORY_AREA_SYSTEM,
|
|
||||||
&BaseAddress,
|
|
||||||
MM_KERNEL_MAP_SIZE,
|
|
||||||
0,
|
|
||||||
&MiKernelMapDescriptor,
|
|
||||||
TRUE,
|
TRUE,
|
||||||
FALSE,
|
FALSE,
|
||||||
BoundaryAddressMultiple);
|
BoundaryAddressMultiple);
|
||||||
|
@ -239,7 +246,7 @@ MmInitVirtualMemory(ULONG_PTR LastKernelAddress,
|
||||||
&BaseAddress,
|
&BaseAddress,
|
||||||
MmPagedPoolSize,
|
MmPagedPoolSize,
|
||||||
0,
|
0,
|
||||||
&MiPagedPoolDescriptor,
|
&MArea,
|
||||||
TRUE,
|
TRUE,
|
||||||
FALSE,
|
FALSE,
|
||||||
BoundaryAddressMultiple);
|
BoundaryAddressMultiple);
|
||||||
|
@ -257,7 +264,7 @@ MmInitVirtualMemory(ULONG_PTR LastKernelAddress,
|
||||||
&BaseAddress,
|
&BaseAddress,
|
||||||
Length,
|
Length,
|
||||||
0,
|
0,
|
||||||
&kernel_shared_data_desc,
|
&MArea,
|
||||||
TRUE,
|
TRUE,
|
||||||
FALSE,
|
FALSE,
|
||||||
BoundaryAddressMultiple);
|
BoundaryAddressMultiple);
|
||||||
|
|
Loading…
Reference in a new issue