00001 /*++ 00002 00003 Copyright (c) 1990 Microsoft Corporation 00004 Copyright (c) 1992 Digital Equipment Corporation 00005 00006 Module Name: 00007 00008 dataalpha.c 00009 00010 Abstract: 00011 00012 This module contains the private hardware specific global storage for 00013 the memory management subsystem. 00014 00015 Author: 00016 00017 Lou Perazzoli (loup) 27-Mar-1990 00018 Joe Notarangelo 23-April-1992 00019 00020 Revision History: 00021 00022 --*/ 00023 00024 #include "mi.h" 00025 00026 // 00027 // A zero Pte. 00028 // 00029 00030 MMPTE ZeroPte = { 0 }; 00031 00032 // 00033 // A kernel zero PTE. 00034 // 00035 00036 MMPTE ZeroKernelPte = { 0 }; 00037 00038 MMPTE ValidKernelPte = { MM_PTE_VALID_MASK | 00039 MM_PTE_WRITE_MASK | 00040 MM_PTE_DIRTY_MASK | 00041 MM_PTE_GLOBAL_MASK }; 00042 00043 MMPTE ValidKernelPteLocal = { MM_PTE_VALID_MASK | 00044 MM_PTE_WRITE_MASK | 00045 MM_PTE_DIRTY_MASK }; 00046 00047 MMPTE ValidUserPte = { MM_PTE_VALID_MASK | 00048 MM_PTE_WRITE_MASK | 00049 MM_PTE_OWNER_MASK | 00050 MM_PTE_DIRTY_MASK }; 00051 00052 MMPTE ValidPtePte = { MM_PTE_VALID_MASK | 00053 MM_PTE_WRITE_MASK | 00054 MM_PTE_DIRTY_MASK }; 00055 00056 MMPTE ValidPdePde = { MM_PTE_VALID_MASK | 00057 MM_PTE_WRITE_MASK | 00058 MM_PTE_DIRTY_MASK }; 00059 00060 MMPTE ValidKernelPde = { MM_PTE_VALID_MASK | 00061 MM_PTE_WRITE_MASK | 00062 MM_PTE_DIRTY_MASK | 00063 MM_PTE_GLOBAL_MASK }; 00064 00065 MMPTE ValidKernelPdeLocal = { MM_PTE_VALID_MASK | 00066 MM_PTE_WRITE_MASK | 00067 MM_PTE_DIRTY_MASK }; 00068 00069 MMPTE DemandZeroPde = { MM_READWRITE << 3 }; 00070 00071 MMPTE DemandZeroPte = { MM_READWRITE << 3 }; 00072 00073 MMPTE TransitionPde = { MM_PTE_TRANSITION_MASK | (MM_READWRITE << 3) }; 00074 00075 MMPTE PrototypePte = { 0xFFFFF000 | (MM_READWRITE << 3) | MM_PTE_PROTOTYPE_MASK }; 00076 00077 // 00078 // PTE which generates an access violation when referenced. 00079 // 00080 00081 MMPTE NoAccessPte = {MM_NOACCESS << 3}; 00082 00083 // 00084 // Pool start and end. 00085 // 00086 00087 PVOID MmNonPagedPoolStart; 00088 00089 PVOID MmNonPagedPoolEnd = (PVOID)(MM_NONPAGED_POOL_END); 00090 00091 PVOID MmPagedPoolStart = (PVOID)(MM_PAGED_POOL_START); 00092 00093 PVOID MmPagedPoolEnd; 00094 00095 // 00096 // PTE reserved for mapping physical data for debugger. 00097 // 00098 00099 PMMPTE MmDebugPte = MiGetPteAddress( 0xfffdf000 ); 00100 00101 // 00102 // 16 PTEs reserved for mapping MDLs (128k max). 00103 // 00104 00105 PMMPTE MmCrashDumpPte = (MiGetPteAddress(MM_NONPAGED_POOL_END)); 00106 00107 00108 #if MM_MAXIMUM_NUMBER_OF_COLORS > 1 00109 MMPFNLIST MmFreePagesByPrimaryColor[2][MM_MAXIMUM_NUMBER_OF_COLORS]; 00110 #endif 00111 00112 PMMCOLOR_TABLES MmFreePagesByColor[2]; 00113 00114 MMPFNLIST MmModifiedPageListByColor[MM_MAXIMUM_NUMBER_OF_COLORS] = { 00115 0, ModifiedPageList, MM_EMPTY_LIST, MM_EMPTY_LIST}; 00116 00117 ULONG MmSecondaryColorMask; 00118 00119 // 00120 // Color tables for modified pages destined for the paging file. 00121 // 00122 00123 ULONG MmTotalPagesForPagingFile;