Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

datamips.c

Go to the documentation of this file.
00001 /*++ 00002 00003 Copyright (c) 1990 Microsoft Corporation 00004 00005 Module Name: 00006 00007 datamips.c 00008 00009 Abstract: 00010 00011 This module contains the private hardware specific global storage for 00012 the memory management subsystem. 00013 00014 Author: 00015 00016 Lou Perazzoli (loup) 27-Mar-1990 00017 00018 Revision History: 00019 00020 --*/ 00021 00022 #include "mi.h" 00023 00024 // 00025 // A zero Pte. 00026 // 00027 00028 MMPTE ZeroPte = { 0 }; 00029 00030 // 00031 // A kernel zero PTE. 00032 // 00033 00034 #ifdef R3000 00035 MMPTE ZeroKernelPte = { 0 }; 00036 #endif //R3000 00037 00038 #ifdef R4000 00039 MMPTE ZeroKernelPte = { MM_PTE_GLOBAL_MASK }; 00040 #endif //R4000 00041 00042 #ifdef R3000 00043 MMPTE ValidKernelPte = { MM_PTE_VALID_MASK | 00044 MM_PTE_WRITE_MASK | 00045 MM_PTE_DIRTY_MASK | 00046 MM_PTE_GLOBAL_MASK }; 00047 #endif //R3000 00048 00049 #ifdef R4000 00050 MMPTE ValidKernelPte = { MM_PTE_VALID_MASK | 00051 MM_PTE_CACHE_ENABLE_MASK | 00052 MM_PTE_WRITE_MASK | 00053 MM_PTE_DIRTY_MASK | 00054 MM_PTE_GLOBAL_MASK }; 00055 #endif //R4000 00056 00057 00058 MMPTE ValidUserPte = { MM_PTE_VALID_MASK | 00059 MM_PTE_WRITE_MASK | 00060 MM_PTE_CACHE_ENABLE_MASK | 00061 MM_PTE_DIRTY_MASK }; 00062 00063 MMPTE ValidPtePte = { MM_PTE_VALID_MASK | 00064 MM_PTE_WRITE_MASK | 00065 MM_PTE_CACHE_ENABLE_MASK | 00066 MM_PTE_DIRTY_MASK }; 00067 00068 MMPTE ValidPdePde = { MM_PTE_VALID_MASK | 00069 MM_PTE_WRITE_MASK | 00070 MM_PTE_CACHE_ENABLE_MASK | 00071 MM_PTE_DIRTY_MASK }; 00072 00073 MMPTE ValidKernelPde = { MM_PTE_VALID_MASK | 00074 MM_PTE_WRITE_MASK | 00075 MM_PTE_CACHE_ENABLE_MASK | 00076 MM_PTE_DIRTY_MASK | 00077 MM_PTE_GLOBAL_MASK }; 00078 00079 #ifdef R3000 00080 MMPTE DemandZeroPde = { MM_READWRITE << 4 }; 00081 #endif //R3000 00082 00083 #ifdef R4000 00084 MMPTE DemandZeroPde = { MM_READWRITE << 3 }; 00085 #endif //R4000 00086 00087 #ifdef R3000 00088 MMPTE DemandZeroPte = { MM_READWRITE << 4 }; 00089 #endif //R3000 00090 00091 00092 #ifdef R4000 00093 MMPTE DemandZeroPte = { MM_READWRITE << 3 }; 00094 #endif //R4000 00095 00096 #ifdef R3000 00097 MMPTE TransitionPde = { 0x2 | (MM_READWRITE << 4) }; 00098 #endif //R3000 00099 00100 #ifdef R4000 00101 MMPTE TransitionPde = { MM_PTE_TRANSITION_MASK | (MM_READWRITE << 3) }; 00102 #endif //R4000 00103 00104 #ifdef R3000 00105 MMPTE PrototypePte = { 0xFFFFF000 | (MM_READWRITE << 4) | MM_PTE_PROTOTYPE_MASK }; 00106 #endif //R3000 00107 00108 #ifdef R4000 00109 MMPTE PrototypePte = { 0xFFFFF000 | (MM_READWRITE << 3) | MM_PTE_PROTOTYPE_MASK }; 00110 #endif //R4000 00111 00112 // 00113 // PTE which generates an access violation when referenced. 00114 // 00115 00116 #ifdef R3000 00117 MMPTE NoAccessPte = {MM_NOACCESS << 4}; 00118 #endif //R3000 00119 00120 #ifdef R4000 00121 MMPTE NoAccessPte = {MM_NOACCESS << 3}; 00122 #endif //R4000 00123 00124 00125 // 00126 // Pool start and end. 00127 // 00128 00129 PVOID MmNonPagedPoolStart; 00130 00131 PVOID MmNonPagedPoolEnd = ((PVOID)MM_NONPAGED_POOL_END); 00132 00133 PVOID MmPagedPoolStart = (PVOID)0xE1000000; 00134 00135 PVOID MmPagedPoolEnd; 00136 00137 00138 // 00139 // Color tables for free and zeroed pages. 00140 // 00141 00142 MMPFNLIST MmFreePagesByPrimaryColor[2][MM_MAXIMUM_NUMBER_OF_COLORS]; 00143 00144 PMMCOLOR_TABLES MmFreePagesByColor[2]; 00145 00146 MMPFNLIST MmStandbyPageListByColor[MM_MAXIMUM_NUMBER_OF_COLORS] = { 00147 0, StandbyPageList, MM_EMPTY_LIST, MM_EMPTY_LIST, 00148 0, StandbyPageList, MM_EMPTY_LIST, MM_EMPTY_LIST, 00149 0, StandbyPageList, MM_EMPTY_LIST, MM_EMPTY_LIST, 00150 0, StandbyPageList, MM_EMPTY_LIST, MM_EMPTY_LIST, 00151 0, StandbyPageList, MM_EMPTY_LIST, MM_EMPTY_LIST, 00152 0, StandbyPageList, MM_EMPTY_LIST, MM_EMPTY_LIST, 00153 0, StandbyPageList, MM_EMPTY_LIST, MM_EMPTY_LIST, 00154 0, StandbyPageList, MM_EMPTY_LIST, MM_EMPTY_LIST 00155 }; 00156 00157 00158 // 00159 // Color tables for modified pages destined for the paging file. 00160 // 00161 00162 MMPFNLIST MmModifiedPageListByColor[MM_MAXIMUM_NUMBER_OF_COLORS] = { 00163 0, ModifiedPageList, MM_EMPTY_LIST, MM_EMPTY_LIST, 00164 0, ModifiedPageList, MM_EMPTY_LIST, MM_EMPTY_LIST, 00165 0, ModifiedPageList, MM_EMPTY_LIST, MM_EMPTY_LIST, 00166 0, ModifiedPageList, MM_EMPTY_LIST, MM_EMPTY_LIST, 00167 0, ModifiedPageList, MM_EMPTY_LIST, MM_EMPTY_LIST, 00168 0, ModifiedPageList, MM_EMPTY_LIST, MM_EMPTY_LIST, 00169 0, ModifiedPageList, MM_EMPTY_LIST, MM_EMPTY_LIST, 00170 0, ModifiedPageList, MM_EMPTY_LIST, MM_EMPTY_LIST}; 00171 00172 ULONG MmSecondaryColorMask; 00173 00174 // 00175 // Count of the number of modified pages destined for the paging file. 00176 // 00177 00178 ULONG MmTotalPagesForPagingFile; 00179 00180 00181 // 00182 // PTE reserved for mapping physical data for debugger. 00183 // 00184 00185 PMMPTE MmDebugPte = (MiGetPteAddress((PVOID)MM_NONPAGED_POOL_END)); 00186 00187 // 00188 // 17 PTEs reserved for mapping MDLs (64k max) + 1 to ensure g-bits right. 00189 // 00190 00191 PMMPTE MmCrashDumpPte = (MiGetPteAddress((PVOID)MM_NONPAGED_POOL_END));

Generated on Sat May 15 19:39:38 2004 for test by doxygen 1.3.7