108 lines
2.5 KiB
C
108 lines
2.5 KiB
C
/*++
|
|
|
|
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;
|