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

dataia64.c

Go to the documentation of this file.
00001 /*++ 00002 00003 Copyright (c) 1990 Microsoft Corporation 00004 00005 Module Name: 00006 00007 dataia64.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) 22-Jan-1990 00017 00018 Revision History: 00019 00020 Koichi Yamada (kyamada) 9-Jan-1996 : IA64 version based on i386 version 00021 00022 --*/ 00023 00024 #include "mi.h" 00025 00026 00027 // 00028 // A zero Pte. 00029 // 00030 00031 MMPTE ZeroPte = { 0 }; 00032 00033 00034 // 00035 // A kernel zero PTE. 00036 // 00037 00038 MMPTE ZeroKernelPte = {0x0}; 00039 00040 00041 MMPTE ValidKernelPte = { MM_PTE_VALID_MASK | 00042 MM_PTE_CACHE | 00043 MM_PTE_WRITE_MASK | 00044 MM_PTE_EXECUTE_MASK | 00045 MM_PTE_ACCESS_MASK | 00046 MM_PTE_DIRTY_MASK | 00047 MM_PTE_EXC_DEFER}; 00048 00049 MMPTE ValidKernelPteLocal = { MM_PTE_VALID_MASK | 00050 MM_PTE_CACHE | 00051 MM_PTE_WRITE_MASK | 00052 MM_PTE_ACCESS_MASK | 00053 MM_PTE_DIRTY_MASK | 00054 MM_PTE_EXC_DEFER}; 00055 00056 00057 MMPTE ValidUserPte = { MM_PTE_VALID_MASK | 00058 MM_PTE_CACHE | 00059 MM_PTE_WRITE_MASK | 00060 MM_PTE_OWNER_MASK | 00061 MM_PTE_ACCESS_MASK | 00062 MM_PTE_DIRTY_MASK | 00063 MM_PTE_EXC_DEFER}; 00064 00065 00066 MMPTE ValidPtePte = { MM_PTE_VALID_MASK | 00067 MM_PTE_CACHE | 00068 MM_PTE_WRITE_MASK | 00069 MM_PTE_ACCESS_MASK | 00070 MM_PTE_DIRTY_MASK }; 00071 00072 00073 MMPTE ValidPdePde = { MM_PTE_VALID_MASK | 00074 MM_PTE_CACHE | 00075 MM_PTE_WRITE_MASK | 00076 MM_PTE_ACCESS_MASK | 00077 MM_PTE_DIRTY_MASK }; 00078 00079 00080 MMPTE ValidKernelPde = { MM_PTE_VALID_MASK | 00081 MM_PTE_CACHE | 00082 MM_PTE_WRITE_MASK | 00083 MM_PTE_ACCESS_MASK | 00084 MM_PTE_DIRTY_MASK }; 00085 00086 MMPTE ValidKernelPdeLocal = { MM_PTE_VALID_MASK | 00087 MM_PTE_WRITE_MASK | 00088 MM_PTE_DIRTY_MASK }; 00089 00090 MMPTE ValidPpePte = { MM_PTE_VALID_MASK | 00091 MM_PTE_CACHE | 00092 MM_PTE_WRITE_MASK | 00093 MM_PTE_ACCESS_MASK | 00094 MM_PTE_DIRTY_MASK }; 00095 00096 00097 MMPTE DemandZeroPde = { MM_READWRITE << MM_PROTECT_FIELD_SHIFT }; 00098 00099 00100 MMPTE DemandZeroPte = { MM_READWRITE << MM_PROTECT_FIELD_SHIFT }; 00101 00102 00103 MMPTE TransitionPde = { MM_PTE_TRANSITION_MASK | 00104 MM_READWRITE << MM_PROTECT_FIELD_SHIFT }; 00105 00106 00107 MMPTE PrototypePte = { MI_PTE_LOOKUP_NEEDED << 32 | 00108 MM_PTE_PROTOTYPE_MASK | 00109 MM_READWRITE << MM_PROTECT_FIELD_SHIFT }; 00110 00111 // 00112 // PTE which generates an access violation when referenced. 00113 // 00114 00115 MMPTE NoAccessPte = {MM_NOACCESS << MM_PROTECT_FIELD_SHIFT}; 00116 00117 // 00118 // Pool start and end. 00119 // 00120 00121 PVOID MmNonPagedPoolStart; 00122 00123 PVOID MmNonPagedPoolEnd = (PVOID)MM_NONPAGED_POOL_END; 00124 00125 PVOID MmPagedPoolStart = (PVOID)MM_PAGED_POOL_START; 00126 00127 PVOID MmPagedPoolEnd; 00128 00129 ULONG_PTR MmKseg2Frame = 0; 00130 00131 // 00132 // Color tables for free and zeroed pages. 00133 // 00134 00135 #if MM_MAXIMUM_NUMBER_OF_COLORS > 1 00136 MMPFNLIST MmFreePagesByPrimaryColor[2][MM_MAXIMUM_NUMBER_OF_COLORS]; 00137 #endif 00138 00139 PMMCOLOR_TABLES MmFreePagesByColor[2]; 00140 00141 // 00142 // Color tables for modified pages destined for the paging file. 00143 // 00144 00145 MMPFNLIST MmModifiedPageListByColor[MM_MAXIMUM_NUMBER_OF_COLORS] = { 00146 0, ModifiedPageList, MM_EMPTY_LIST, MM_EMPTY_LIST}; 00147 00148 00149 ULONG MmSecondaryColorMask; 00150 00151 // 00152 // Count of the number of modified pages destined for the paging file. 00153 // 00154 00155 ULONG MmTotalPagesForPagingFile = 0; 00156 00157 // 00158 // Pte reserved for mapping pages for the debugger. 00159 // 00160 00161 PMMPTE MmDebugPte; 00162 00163 // 00164 // 16 PTEs reserved for mapping MDLs (64k max). 00165 // 00166 00167 PMMPTE MmCrashDumpPte; 00168 00169 // 00170 // Maximum size of system cache 00171 // 00172 00173 ULONG MiMaximumSystemCacheSize; 00174 00175 00176 // 00177 // Supported Page Size Information 00178 // 00179 00180 ULONGLONG MmPageSizeInfo = 0; 00181 00182 #if defined(_MIALT4K_) 00183 00184 // 00185 // Map a IA32 compatible PTE protection from Pte.Protect field 00186 // 00187 00188 ULONG MmProtectToPteMaskForIA32[32] = { 00189 MM_PTE_NOACCESS, 00190 MM_PTE_EXECUTE_READ | MM_PTE_CACHE, 00191 MM_PTE_EXECUTE_READ | MM_PTE_CACHE, 00192 MM_PTE_EXECUTE_READ | MM_PTE_CACHE, 00193 MM_PTE_EXECUTE_READWRITE | MM_PTE_CACHE, 00194 MM_PTE_EXECUTE_WRITECOPY | MM_PTE_CACHE, 00195 MM_PTE_EXECUTE_READWRITE | MM_PTE_CACHE, 00196 MM_PTE_EXECUTE_WRITECOPY | MM_PTE_CACHE, 00197 MM_PTE_NOACCESS, 00198 MM_PTE_NOCACHE | MM_PTE_EXECUTE_READ, 00199 MM_PTE_NOCACHE | MM_PTE_EXECUTE_READ, 00200 MM_PTE_NOCACHE | MM_PTE_EXECUTE_READ, 00201 MM_PTE_NOCACHE | MM_PTE_EXECUTE_READWRITE, 00202 MM_PTE_NOCACHE | MM_PTE_EXECUTE_WRITECOPY, 00203 MM_PTE_NOCACHE | MM_PTE_EXECUTE_READWRITE, 00204 MM_PTE_NOCACHE | MM_PTE_EXECUTE_WRITECOPY, 00205 MM_PTE_NOACCESS, 00206 MM_PTE_GUARD | MM_PTE_EXECUTE_READ | MM_PTE_CACHE, 00207 MM_PTE_GUARD | MM_PTE_EXECUTE_READ | MM_PTE_CACHE, 00208 MM_PTE_GUARD | MM_PTE_EXECUTE_READ | MM_PTE_CACHE, 00209 MM_PTE_GUARD | MM_PTE_EXECUTE_READWRITE | MM_PTE_CACHE, 00210 MM_PTE_GUARD | MM_PTE_EXECUTE_WRITECOPY | MM_PTE_CACHE, 00211 MM_PTE_GUARD | MM_PTE_EXECUTE_READWRITE | MM_PTE_CACHE, 00212 MM_PTE_GUARD | MM_PTE_EXECUTE_WRITECOPY | MM_PTE_CACHE, 00213 MM_PTE_NOACCESS, 00214 MM_PTE_NOCACHE | MM_PTE_GUARD | MM_PTE_EXECUTE_READ, 00215 MM_PTE_NOCACHE | MM_PTE_GUARD | MM_PTE_EXECUTE_READ, 00216 MM_PTE_NOCACHE | MM_PTE_GUARD | MM_PTE_EXECUTE_READ, 00217 MM_PTE_NOCACHE | MM_PTE_GUARD | MM_PTE_EXECUTE_READWRITE, 00218 MM_PTE_NOCACHE | MM_PTE_GUARD | MM_PTE_EXECUTE_WRITECOPY, 00219 MM_PTE_NOCACHE | MM_PTE_GUARD | MM_PTE_EXECUTE_READWRITE, 00220 MM_PTE_NOCACHE | MM_PTE_GUARD | MM_PTE_EXECUTE_WRITECOPY 00221 }; 00222 00223 ULONG MmProtectToPteMaskForSplit[32] = { 00224 MM_PTE_NOACCESS, 00225 MM_PTE_EXECUTE_READ | MM_PTE_CACHE, 00226 MM_PTE_EXECUTE_READ | MM_PTE_CACHE, 00227 MM_PTE_EXECUTE_READ | MM_PTE_CACHE, 00228 MM_PTE_EXECUTE_READ | MM_PTE_CACHE, 00229 MM_PTE_EXECUTE_WRITECOPY | MM_PTE_CACHE, 00230 MM_PTE_EXECUTE_READ | MM_PTE_CACHE, 00231 MM_PTE_EXECUTE_WRITECOPY | MM_PTE_CACHE, 00232 MM_PTE_NOACCESS, 00233 MM_PTE_NOCACHE | MM_PTE_EXECUTE_READ, 00234 MM_PTE_NOCACHE | MM_PTE_EXECUTE_READ, 00235 MM_PTE_NOCACHE | MM_PTE_EXECUTE_READ, 00236 MM_PTE_NOCACHE | MM_PTE_EXECUTE_READ, 00237 MM_PTE_NOCACHE | MM_PTE_EXECUTE_WRITECOPY, 00238 MM_PTE_NOCACHE | MM_PTE_EXECUTE_READWRITE, 00239 MM_PTE_NOCACHE | MM_PTE_EXECUTE_WRITECOPY, 00240 MM_PTE_NOACCESS, 00241 MM_PTE_GUARD | MM_PTE_EXECUTE_READ | MM_PTE_CACHE, 00242 MM_PTE_GUARD | MM_PTE_EXECUTE_READ | MM_PTE_CACHE, 00243 MM_PTE_GUARD | MM_PTE_EXECUTE_READ | MM_PTE_CACHE, 00244 MM_PTE_GUARD | MM_PTE_EXECUTE_READ | MM_PTE_CACHE, 00245 MM_PTE_GUARD | MM_PTE_EXECUTE_WRITECOPY | MM_PTE_CACHE, 00246 MM_PTE_GUARD | MM_PTE_EXECUTE_READ | MM_PTE_CACHE, 00247 MM_PTE_GUARD | MM_PTE_EXECUTE_WRITECOPY | MM_PTE_CACHE, 00248 MM_PTE_NOACCESS, 00249 MM_PTE_NOCACHE | MM_PTE_GUARD | MM_PTE_EXECUTE_READ, 00250 MM_PTE_NOCACHE | MM_PTE_GUARD | MM_PTE_EXECUTE_READ, 00251 MM_PTE_NOCACHE | MM_PTE_GUARD | MM_PTE_EXECUTE_READ, 00252 MM_PTE_NOCACHE | MM_PTE_GUARD | MM_PTE_EXECUTE_READ, 00253 MM_PTE_NOCACHE | MM_PTE_GUARD | MM_PTE_EXECUTE_WRITECOPY, 00254 MM_PTE_NOCACHE | MM_PTE_GUARD | MM_PTE_EXECUTE_READ, 00255 MM_PTE_NOCACHE | MM_PTE_GUARD | MM_PTE_EXECUTE_WRITECOPY 00256 }; 00257 00258 #endif 00259 00260

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