ReactOS  0.4.13-dev-464-g6b95727
mmtypes.h
Go to the documentation of this file.
1 /*++ NDK Version: 0095
2 
3 Copyright (c) Alex Ionescu. All rights reserved.
4 
5 Header Name:
6 
7  mmtypes.h (ARM)
8 
9 Abstract:
10 
11  ARM Type definitions for the Memory Manager
12 
13 Author:
14 
15  Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
16 
17 --*/
18 
19 #ifndef _ARM_MMTYPES_H
20 #define _ARM_MMTYPES_H
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 //
27 // Dependencies
28 //
29 
30 //
31 // Page-related Macros
32 //
33 #ifndef PAGE_SIZE
34 #define PAGE_SIZE 0x1000
35 #endif
36 #define PAGE_SHIFT 12L
37 #define MM_ALLOCATION_GRANULARITY 0x10000
38 #define MM_ALLOCATION_GRANULARITY_SHIFT 16L
39 #define MM_PAGE_FRAME_NUMBER_SIZE 20
40 
41 //
42 // User space range limit
43 //
44 #define MI_HIGHEST_USER_ADDRESS (PVOID)0x7FFEFFFF
45 
46 //
47 // Address of the shared user page
48 //
49 #define MM_SHARED_USER_DATA_VA 0x7FFE0000
50 
51 //
52 // Sanity checks for Paging Macros
53 //
54 #ifdef C_ASSERT
55 C_ASSERT(PAGE_SIZE == (1 << PAGE_SHIFT));
60 #endif
61 
62 //
63 // Page Table Entry Definitions
64 //
65 typedef struct _HARDWARE_PDE_ARMV6
66 {
67  ULONG Valid:1; // Only for small pages
68  ULONG LargePage:1; // Note, if large then Valid = 0
76 
78 {
79  ULONG Valid:1; // Only for small pages
80  ULONG LargePage:1; // Note, if large then Valid = 0
86  ULONG Sbo:1; // ULONG Accessed:1;?
96 
97 typedef struct _HARDWARE_PTE_ARMV6
98 {
103  ULONG Sbo:1; // ULONG Accessed:1;?
111 
112 C_ASSERT(sizeof(HARDWARE_PDE_ARMV6) == sizeof(ULONG));
113 C_ASSERT(sizeof(HARDWARE_LARGE_PTE_ARMV6) == sizeof(ULONG));
114 C_ASSERT(sizeof(HARDWARE_PTE_ARMV6) == sizeof(ULONG));
115 
116 typedef struct _MMPTE_SOFTWARE
117 {
125 
126 typedef struct _MMPTE_TRANSITION
127 {
138 
139 typedef struct _MMPTE_PROTOTYPE
140 {
147 
148 typedef struct _MMPTE_SUBSECTION
149 {
157 
158 typedef struct _MMPTE_LIST
159 {
165 } MMPTE_LIST;
166 
167 typedef struct _MMPTE_HARDWARE
168 {
181 
182 
183 //
184 // Use the right PTE structure
185 //
186 #define HARDWARE_PTE HARDWARE_PTE_ARMV6
187 #define PHARDWARE_PTE PHARDWARE_PTE_ARMV6
188 
189 typedef struct _MMPTE
190 {
191  union
192  {
193  ULONG_PTR Long;
201  } u;
202 } MMPTE, *PMMPTE;
203 
204 typedef union _MMPDE_HARDWARE
205 {
215 
216 typedef struct _MMPDE
217 {
218  union
219  {
222  } u;
223 } MMPDE, *PMMPDE;
224 
225 #ifdef __cplusplus
226 }; // extern "C"
227 #endif
228 
229 #endif
struct _HARDWARE_PDE_ARMV6 * PHARDWARE_PDE_ARMV6
#define MM_ALLOCATION_GRANULARITY
Definition: mmtypes.h:37
#define PAGE_SIZE
Definition: mmtypes.h:34
struct _HARDWARE_LARGE_PTE_ARMV6 HARDWARE_LARGE_PTE_ARMV6
ULONG NextEntry
Definition: mmtypes.h:163
ULONG ProtoAddressHigh
Definition: mmtypes.h:145
struct _MMPTE_TRANSITION MMPTE_TRANSITION
ULONG OneEntry
Definition: mmtypes.h:161
ULONG NoExecute
Definition: mmtypes.h:169
struct _MMPTE_HARDWARE * PMMPTE_HARDWARE
ULONG Protection
Definition: mmtypes.h:152
union _MMPDE_HARDWARE * PMMPDE_HARDWARE
ULONG PageFrameNumber
Definition: mmtypes.h:136
HARDWARE_PTE Flush
Definition: mmtypes.h:216
ULONG Transition
Definition: mmtypes.h:135
ULONG Cached
Definition: mmtypes.h:172
struct _HARDWARE_PDE_ARMV6 HARDWARE_PDE_ARMV6
uint32_t ULONG_PTR
Definition: typedefs.h:63
struct _MMPTE_SUBSECTION MMPTE_SUBSECTION
ULONG NonGlobal
Definition: mmtypes.h:178
ULONG Valid
Definition: mmtypes.h:160
ULONG filler0
Definition: mmtypes.h:162
struct _MMPTE * PMMPDE
struct _MMPTE MMPDE
ULONG Protection
Definition: mmtypes.h:120
struct _HARDWARE_PTE_ARMV6 HARDWARE_PTE_ARMV6
ULONG PageFrameNumber
Definition: mmtypes.h:74
#define PAGE_SHIFT
Definition: mmtypes.h:36
ULONG NoExecute
Definition: mmtypes.h:210
ULONG Buffered
Definition: mmtypes.h:171
#define MM_ALLOCATION_GRANULARITY_SHIFT
Definition: mmtypes.h:38
MMPTE_TRANSITION Trans
Definition: mmtypes.h:220
MMPTE_LIST List
Definition: mmtypes.h:222
struct _MMPTE * PMMPTE
ULONG PageFileLow
Definition: mmtypes.h:119
ULONG Buffered
Definition: mmtypes.h:208
struct _MMPTE_SOFTWARE MMPTE_SOFTWARE
union _MMPDE_HARDWARE MMPDE_HARDWARE
ULONG CacheAttributes
Definition: mmtypes.h:175
ULONG PageFileHigh
Definition: mmtypes.h:123
ULONG CacheAttributes
Definition: mmtypes.h:105
ULONG Prototype
Definition: mmtypes.h:121
ULONG Long
Definition: mmtypes.h:221
struct _MMPTE_LIST MMPTE_LIST
struct _HARDWARE_PTE_ARMV6 * PHARDWARE_PTE_ARMV6
ULONG_PTR Long
Definition: mmtypes.h:215
MMPTE_HARDWARE Hard
Definition: mmtypes.h:217
ULONG SubsectionAddressLow
Definition: mmtypes.h:151
MMPDE_HARDWARE Hard
Definition: mmtypes.h:220
struct _HARDWARE_LARGE_PTE_ARMV6 * PHARDWARE_LARGE_PTE_ARMV6
ULONG Domain
Definition: mmtypes.h:211
struct _MMPTE_PROTOTYPE MMPTE_PROTOTYPE
ULONG Transition
Definition: mmtypes.h:122
ULONG SubsectionAddressHigh
Definition: mmtypes.h:154
ULONG ReadOnly
Definition: mmtypes.h:176
C_ASSERT(sizeof(HARDWARE_PDE_ARMV6)==sizeof(ULONG))
MMPTE_SOFTWARE Soft
Definition: mmtypes.h:219
struct _MMPTE MMPTE
ULONG Prototype
Definition: mmtypes.h:144
ULONG ReadOnly
Definition: mmtypes.h:143
union _MMPDE::@2269 u
unsigned int ULONG
Definition: retypes.h:1
ULONG ProtoAddressLow
Definition: mmtypes.h:142
ULONG Cached
Definition: mmtypes.h:209
ULONG PageFrameNumber
Definition: mmtypes.h:179
struct _MMPTE_HARDWARE MMPTE_HARDWARE
MMPTE_SUBSECTION Subsect
Definition: mmtypes.h:221
ULONG Prototype
Definition: mmtypes.h:164
ULONG Protection
Definition: mmtypes.h:132
MMPTE_PROTOTYPE Proto
Definition: mmtypes.h:218
union _MMPTE::@2231 u
ULONG LargePage
Definition: mmtypes.h:207
ULONG PageFrameNumber
Definition: mmtypes.h:109
ULONG PageFrameNumber
Definition: mmtypes.h:213
ULONG Prototype
Definition: mmtypes.h:177