Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenmmtypes.h
Go to the documentation of this file.
00001 /*++ NDK Version: 0095 00002 00003 Copyright (c) Alex Ionescu. All rights reserved. 00004 00005 Header Name: 00006 00007 mmtypes.h (AMD64) 00008 00009 Abstract: 00010 00011 AMD64 Type definitions for the Memory Manager 00012 00013 Author: 00014 00015 Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004 00016 Timo Kreuzer (timo.kreuzer@reactos.com) 15-Aug-2008 00017 00018 --*/ 00019 00020 #ifndef _AMD64_MMTYPES_H 00021 #define _AMD64_MMTYPES_H 00022 00023 // 00024 // Dependencies 00025 // 00026 00027 // 00028 // Page-related Macros 00029 // 00030 #define PAGE_SIZE 0x1000 00031 #define PAGE_SHIFT 12L 00032 #define MM_ALLOCATION_GRANULARITY 0x10000 00033 #define MM_ALLOCATION_GRANULARITY_SHIFT 16L 00034 00035 // 00036 // Address of the shared user page 00037 // 00038 #define MM_SHARED_USER_DATA_VA 0x7FFE0000ULL 00039 00040 // 00041 // Sanity checks for Paging Macros 00042 // 00043 #ifdef C_ASSERT 00044 C_ASSERT(PAGE_SIZE == (1 << PAGE_SHIFT)); 00045 C_ASSERT(MM_ALLOCATION_GRANULARITY == (1 << MM_ALLOCATION_GRANULARITY_SHIFT)); 00046 C_ASSERT(MM_ALLOCATION_GRANULARITY && 00047 !(MM_ALLOCATION_GRANULARITY & (MM_ALLOCATION_GRANULARITY - 1))); 00048 C_ASSERT(MM_ALLOCATION_GRANULARITY >= PAGE_SIZE); 00049 #endif 00050 00051 // 00052 // Page Table Entry Definitions 00053 // 00054 typedef struct _HARDWARE_PTE 00055 { 00056 ULONG64 Valid:1; 00057 ULONG64 Write:1; 00058 ULONG64 Owner:1; 00059 ULONG64 WriteThrough:1; 00060 ULONG64 CacheDisable:1; 00061 ULONG64 Accessed:1; 00062 ULONG64 Dirty:1; 00063 ULONG64 LargePage:1; 00064 ULONG64 Global:1; 00065 ULONG64 CopyOnWrite:1; 00066 ULONG64 Prototype:1; 00067 ULONG64 reserved0:1; 00068 ULONG64 PageFrameNumber:28; 00069 ULONG64 reserved1:12; 00070 ULONG64 SoftwareWsIndex:11; 00071 ULONG64 NoExecute:1; 00072 } HARDWARE_PTE, *PHARDWARE_PTE; 00073 00074 typedef struct _MMPTE_SOFTWARE 00075 { 00076 ULONG64 Valid:1; 00077 ULONG64 PageFileLow:4; 00078 ULONG64 Protection:5; 00079 ULONG64 Prototype:1; 00080 ULONG64 Transition:1; 00081 ULONG64 UsedPageTableEntries:10; 00082 ULONG64 Reserved:10; 00083 ULONG64 PageFileHigh:32; 00084 } MMPTE_SOFTWARE, *PMMPTE_SOFTWARE; 00085 00086 typedef struct _MMPTE_TRANSITION 00087 { 00088 ULONG64 Valid:1; 00089 ULONG64 Write:1; 00090 ULONG64 Owner:1; 00091 ULONG64 WriteThrough:1; 00092 ULONG64 CacheDisable:1; 00093 ULONG64 Protection:5; 00094 ULONG64 Prototype:1; 00095 ULONG64 Transition:1; 00096 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00097 ULONG64 PageFrameNumber:36; 00098 ULONG64 Unused:16; 00099 #else 00100 ULONG64 PageFrameNumber:28; 00101 ULONG64 Unused:24; 00102 #endif 00103 } MMPTE_TRANSITION; 00104 00105 typedef struct _MMPTE_PROTOTYPE 00106 { 00107 ULONG64 Valid:1; 00108 ULONG64 Unused0:7; 00109 ULONG64 ReadOnly:1; 00110 ULONG64 Unused1:1; 00111 ULONG64 Prototype:1; 00112 ULONG64 Protection:5; 00113 LONG64 ProtoAddress:48; 00114 } MMPTE_PROTOTYPE; 00115 00116 typedef struct _MMPTE_SUBSECTION 00117 { 00118 ULONG64 Valid:1; 00119 ULONG64 Unused0:4; 00120 ULONG64 Protection:5; 00121 ULONG64 Prototype:1; 00122 ULONG64 Unused1:5; 00123 LONG64 SubsectionAddress:48; 00124 } MMPTE_SUBSECTION; 00125 00126 typedef struct _MMPTE_LIST 00127 { 00128 ULONG64 Valid:1; 00129 ULONG64 OneEntry:1; 00130 ULONG64 filler0:3; 00131 ULONG64 Protection:5; 00132 ULONG64 Prototype:1; 00133 ULONG64 Transition:1; 00134 ULONG64 filler1:20; 00135 ULONG64 NextEntry:32; 00136 } MMPTE_LIST; 00137 00138 typedef struct _MMPTE_HARDWARE 00139 { 00140 ULONG64 Valid:1; 00141 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00142 ULONG64 Dirty1:1; 00143 #else 00144 #ifdef CONFIG_SMP 00145 ULONG64 Writable:1; 00146 #else 00147 ULONG64 Write:1; 00148 #endif 00149 #endif 00150 ULONG64 Owner:1; 00151 ULONG64 WriteThrough:1; 00152 ULONG64 CacheDisable:1; 00153 ULONG64 Accessed:1; 00154 ULONG64 Dirty:1; 00155 ULONG64 LargePage:1; 00156 ULONG64 Global:1; 00157 ULONG64 CopyOnWrite:1; 00158 ULONG64 Prototype:1; 00159 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00160 ULONG64 Write:1; 00161 ULONG64 PageFrameNumber:36; 00162 ULONG64 reserved1:4; 00163 #else 00164 #ifdef CONFIG_SMP 00165 ULONG64 Write:1; 00166 #else 00167 ULONG64 reserved0:1; 00168 #endif 00169 ULONG64 PageFrameNumber:28; 00170 ULONG64 reserved1:12; 00171 #endif 00172 ULONG64 SoftwareWsIndex:11; 00173 ULONG64 NoExecute:1; 00174 } MMPTE_HARDWARE, *PMMPTE_HARDWARE; 00175 00176 typedef struct _MMPTE_HARDWARE_LARGEPAGE 00177 { 00178 ULONG64 Valid:1; 00179 ULONG64 Write:1; 00180 ULONG64 Owner:1; 00181 ULONG64 WriteThrough:1; 00182 ULONG64 CacheDisable:1; 00183 ULONG64 Accessed:1; 00184 ULONG64 Dirty:1; 00185 ULONG64 LargePage:1; 00186 ULONG64 Global:1; 00187 ULONG64 CopyOnWrite:1; 00188 ULONG64 Prototype:1; 00189 ULONG64 reserved0:1; 00190 ULONG64 PAT:1; 00191 ULONG64 reserved1:8; 00192 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00193 ULONG64 PageFrameNumber:27; 00194 ULONG64 reserved2:16; 00195 #else 00196 ULONG64 PageFrameNumber:19; 00197 ULONG64 reserved2:24; 00198 #endif 00199 } MMPTE_HARDWARE_LARGEPAGE, *PMMPTE_HARDWARE_LARGEPAGE; 00200 00201 00202 #endif // !AMD64_MMTYPES_H Generated on Sun May 27 2012 04:30:48 for ReactOS by
1.7.6.1
|