Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 1990 Microsoft Corporation Copyright (c) 1992 Digital Equipment Corporation
Module Name:
dataalpha.c
Abstract:
This module contains the private hardware specific global storage for the memory management subsystem.
Author:
Lou Perazzoli (loup) 27-Mar-1990 Joe Notarangelo 23-April-1992
Revision History:
--*/
#include "mi.h"
//
// A zero Pte.
//
const MMPTE ZeroPte = {0};
//
// A kernel zero PTE.
//
const MMPTE ZeroKernelPte = {0};
MMPTE ValidKernelPte = {(MM_PTE_VALID_MASK | MM_PTE_WRITE_MASK | MM_PTE_GLOBAL_MASK) ^ MM_PTE_DIRTY_MASK};
const MMPTE ValidKernelPteLocal = {(MM_PTE_VALID_MASK | MM_PTE_WRITE_MASK) ^ MM_PTE_DIRTY_MASK};
const MMPTE ValidUserPte = {(MM_PTE_VALID_MASK | MM_PTE_WRITE_MASK | MM_PTE_OWNER_MASK) ^ MM_PTE_DIRTY_MASK};
const MMPTE ValidPtePte = {(MM_PTE_VALID_MASK | MM_PTE_WRITE_MASK) ^ MM_PTE_DIRTY_MASK};
const MMPTE ValidPdePde = {(MM_PTE_VALID_MASK | MM_PTE_WRITE_MASK) ^ MM_PTE_DIRTY_MASK};
MMPTE ValidKernelPde = {(MM_PTE_VALID_MASK | MM_PTE_WRITE_MASK | MM_PTE_GLOBAL_MASK) ^ MM_PTE_DIRTY_MASK};
const MMPTE ValidKernelPdeLocal = {(MM_PTE_VALID_MASK | MM_PTE_WRITE_MASK) ^ MM_PTE_DIRTY_MASK};
MMPTE DemandZeroPde = {MM_READWRITE << MM_PROTECT_FIELD_SHIFT};
const MMPTE DemandZeroPte = {MM_READWRITE << MM_PROTECT_FIELD_SHIFT};
const MMPTE TransitionPde = {MM_PTE_TRANSITION_MASK | (MM_READWRITE << MM_PROTECT_FIELD_SHIFT)};
MMPTE PrototypePte = {(MI_PTE_LOOKUP_NEEDED << 32) | (MM_READWRITE << MM_PROTECT_FIELD_SHIFT) | MM_PTE_PROTOTYPE_MASK};
//
// PTE which generates an access violation when referenced.
//
const MMPTE NoAccessPte = {MM_NOACCESS << MM_PROTECT_FIELD_SHIFT};
//
// Pool start and end.
//
PVOID MmNonPagedPoolStart;
PVOID MmNonPagedPoolEnd = (PVOID)(MM_NONPAGED_POOL_END);
const PVOID MmPagedPoolStart = (PVOID)(MM_PAGED_POOL_START);
PVOID MmPagedPoolEnd;
//
// PTE reserved for mapping physical data for debugger.
//
PMMPTE MmDebugPte = MiGetPteAddress(0xfffdf000);
//
// 16 PTEs reserved for mapping MDLs (128k max).
//
PMMPTE MmCrashDumpPte = (MiGetPteAddress(MM_NONPAGED_POOL_END));
#if MM_MAXIMUM_NUMBER_OF_COLORS > 1
MMPFNLIST MmFreePagesByPrimaryColor[2][MM_MAXIMUM_NUMBER_OF_COLORS]; #endif
PMMCOLOR_TABLES MmFreePagesByColor[2];
MMPFNLIST MmModifiedPageListByColor[MM_MAXIMUM_NUMBER_OF_COLORS] = { 0, ModifiedPageList, MM_EMPTY_LIST, MM_EMPTY_LIST};
//
// Color tables for modified pages destined for the paging file.
//
PFN_NUMBER MmTotalPagesForPagingFile;
|