3 Copyright (c) Alex Ionescu. All rights reserved.
11 i386 Type definitions for the Memory Manager
15 Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
19 #ifndef _I386_MMTYPES_H
20 #define _I386_MMTYPES_H
31 // Page-related Macros
33 #define PAGE_SIZE 0x1000
34 #define PAGE_SHIFT 12L
35 #define MM_ALLOCATION_GRANULARITY 0x10000
36 #define MM_ALLOCATION_GRANULARITY_SHIFT 16L
37 #define MM_PAGE_FRAME_NUMBER_SIZE 20
40 // User space range limit
42 #define MI_HIGHEST_USER_ADDRESS (PVOID)0x7FFEFFFF
45 // Address of the shared user page
47 #define MM_SHARED_USER_DATA_VA 0x7FFE0000
50 // Sanity checks for Paging Macros
53 C_ASSERT(PAGE_SIZE
== (1 << PAGE_SHIFT
));
54 C_ASSERT(MM_ALLOCATION_GRANULARITY
== (1 << MM_ALLOCATION_GRANULARITY_SHIFT
));
55 C_ASSERT(MM_ALLOCATION_GRANULARITY
&&
56 !(MM_ALLOCATION_GRANULARITY
& (MM_ALLOCATION_GRANULARITY
- 1)));
57 C_ASSERT(MM_ALLOCATION_GRANULARITY
>= PAGE_SIZE
);
63 #define KSEG0_BASE_PAE 0xE0000000
66 // Page Table Entry Definitions
68 typedef struct _HARDWARE_PTE_X86
82 ULONG PageFrameNumber
:20;
83 } HARDWARE_PTE_X86
, *PHARDWARE_PTE_X86
;
85 typedef struct _MMPTE_SOFTWARE
92 ULONG PageFileHigh
:20;
95 typedef struct _MMPTE_TRANSITION
100 ULONG WriteThrough
:1;
101 ULONG CacheDisable
:1;
105 ULONG PageFrameNumber
:20;
108 typedef struct _MMPTE_PROTOTYPE
111 ULONG ProtoAddressLow
:7;
115 ULONG ProtoAddressHigh
:21;
118 typedef struct _MMPTE_SUBSECTION
121 ULONG SubsectionAddressLow
:4;
124 ULONG SubsectionAddressHigh
:20;
128 typedef struct _MMPTE_LIST
140 typedef struct _MMPTE_HARDWARE
145 ULONG WriteThrough
:1;
146 ULONG CacheDisable
:1;
154 ULONG PageFrameNumber
:20;
155 } MMPTE_HARDWARE
, *PMMPTE_HARDWARE
;
159 typedef struct _MMPTE_HARDWARE
164 ULONG WriteThrough
:1;
165 ULONG CacheDisable
:1;
173 ULONG PageFrameNumber
:20;
174 } MMPTE_HARDWARE
, *PMMPTE_HARDWARE
;
179 // Use the right PTE structure
181 #define HARDWARE_PTE HARDWARE_PTE_X86
182 #define PHARDWARE_PTE PHARDWARE_PTE_X86
184 typedef struct _MMPTE
191 MMPTE_PROTOTYPE Proto
;
193 MMPTE_TRANSITION Trans
;
194 MMPTE_SUBSECTION Subsect
;