ReactOS 0.4.15-dev-7788-g1ad9096
mmtypes.h
Go to the documentation of this file.
1/*++ NDK Version: 0095
2
3Copyright (c) Alex Ionescu. All rights reserved.
4
5Header Name:
6
7 mmtypes.h (ARM)
8
9Abstract:
10
11 ARM Type definitions for the Memory Manager
12
13Author:
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
23extern "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
60#endif
61
62//
63// Page Table Entry Definitions
64//
65typedef 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
97typedef struct _HARDWARE_PTE_ARMV6
98{
103 ULONG Sbo:1; // ULONG Accessed:1;?
111
115
116typedef struct _MMPTE_SOFTWARE
117{
125
126typedef struct _MMPTE_TRANSITION
127{
138
139typedef struct _MMPTE_PROTOTYPE
140{
147
148typedef struct _MMPTE_SUBSECTION
149{
157
158typedef struct _MMPTE_LIST
159{
166
167typedef 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
189typedef struct _MMPTE
190{
191 union
192 {
201 } u;
203
204typedef union _MMPDE_HARDWARE
205{
215
216typedef struct _MMPDE
217{
218 union
219 {
222 } u;
224
225#ifdef __cplusplus
226}; // extern "C"
227#endif
228
229#endif
#define C_ASSERT(e)
Definition: intsafe.h:73
#define MM_ALLOCATION_GRANULARITY_SHIFT
Definition: mmtypes.h:37
struct _MMPTE_HARDWARE MMPTE_HARDWARE
struct _MMPTE_LIST MMPTE_LIST
struct _MMPTE_SUBSECTION MMPTE_SUBSECTION
struct _MMPTE MMPDE
struct _MMPTE_SOFTWARE MMPTE_SOFTWARE
struct _MMPTE_HARDWARE * PMMPTE_HARDWARE
struct _MMPTE * PMMPTE
#define PAGE_SIZE
Definition: mmtypes.h:34
#define PAGE_SHIFT
Definition: mmtypes.h:35
struct _MMPTE_TRANSITION MMPTE_TRANSITION
#define MM_ALLOCATION_GRANULARITY
Definition: mmtypes.h:36
struct _MMPTE MMPTE
struct _MMPTE_PROTOTYPE MMPTE_PROTOTYPE
struct _MMPTE * PMMPDE
struct _HARDWARE_PTE_ARMV6 * PHARDWARE_PTE_ARMV6
union _MMPDE_HARDWARE MMPDE_HARDWARE
struct _HARDWARE_PDE_ARMV6 * PHARDWARE_PDE_ARMV6
struct _HARDWARE_LARGE_PTE_ARMV6 * PHARDWARE_LARGE_PTE_ARMV6
struct _HARDWARE_PTE_ARMV6 HARDWARE_PTE_ARMV6
struct _HARDWARE_LARGE_PTE_ARMV6 HARDWARE_LARGE_PTE_ARMV6
struct _HARDWARE_PDE_ARMV6 HARDWARE_PDE_ARMV6
union _MMPDE_HARDWARE * PMMPDE_HARDWARE
ULONG PageFrameNumber
Definition: mmtypes.h:74
ULONG CacheAttributes
Definition: mmtypes.h:105
ULONG PageFrameNumber
Definition: mmtypes.h:109
union _MMPDE::@2363 u
ULONG Long
Definition: mmtypes.h:221
MMPDE_HARDWARE Hard
Definition: mmtypes.h:220
ULONG Buffered
Definition: mmtypes.h:171
ULONG CacheAttributes
Definition: mmtypes.h:175
ULONG NoExecute
Definition: mmtypes.h:169
ULONG Prototype
Definition: mmtypes.h:177
ULONG NonGlobal
Definition: mmtypes.h:178
ULONG Cached
Definition: mmtypes.h:172
ULONG PageFrameNumber
Definition: mmtypes.h:179
ULONG ReadOnly
Definition: mmtypes.h:176
ULONG Prototype
Definition: mmtypes.h:164
ULONG OneEntry
Definition: mmtypes.h:161
ULONG filler0
Definition: mmtypes.h:162
ULONG Valid
Definition: mmtypes.h:160
ULONG NextEntry
Definition: mmtypes.h:163
ULONG ProtoAddressHigh
Definition: mmtypes.h:145
ULONG ProtoAddressLow
Definition: mmtypes.h:142
ULONG ReadOnly
Definition: mmtypes.h:143
ULONG Prototype
Definition: mmtypes.h:144
ULONG Transition
Definition: mmtypes.h:122
ULONG Protection
Definition: mmtypes.h:120
ULONG Prototype
Definition: mmtypes.h:121
ULONG PageFileHigh
Definition: mmtypes.h:123
ULONG PageFileLow
Definition: mmtypes.h:119
ULONG Protection
Definition: mmtypes.h:152
ULONG SubsectionAddressHigh
Definition: mmtypes.h:154
ULONG SubsectionAddressLow
Definition: mmtypes.h:151
ULONG Protection
Definition: mmtypes.h:132
ULONG Transition
Definition: mmtypes.h:135
ULONG PageFrameNumber
Definition: mmtypes.h:136
MMPTE_LIST List
Definition: mmtypes.h:222
MMPTE_SUBSECTION Subsect
Definition: mmtypes.h:221
MMPTE_TRANSITION Trans
Definition: mmtypes.h:220
MMPTE_PROTOTYPE Proto
Definition: mmtypes.h:218
union _MMPTE::@2325 u
MMPTE_SOFTWARE Soft
Definition: mmtypes.h:219
HARDWARE_PTE Flush
Definition: mmtypes.h:216
MMPTE_HARDWARE Hard
Definition: mmtypes.h:217
ULONG_PTR Long
Definition: mmtypes.h:215
uint32_t ULONG_PTR
Definition: typedefs.h:65
uint32_t ULONG
Definition: typedefs.h:59
ULONG PageFrameNumber
Definition: mmtypes.h:213
ULONG Domain
Definition: mmtypes.h:211
ULONG Cached
Definition: mmtypes.h:209
ULONG NoExecute
Definition: mmtypes.h:210
ULONG LargePage
Definition: mmtypes.h:207
ULONG Buffered
Definition: mmtypes.h:208