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
27 // Page-related Macros
29 #define PAGE_SIZE 0x1000
30 #define PAGE_SHIFT 12L
33 // Page Table Entry Definitions
35 typedef struct _HARDWARE_PTE_X86
49 ULONG PageFrameNumber
:20;
50 } HARDWARE_PTE_X86
, *PHARDWARE_PTE_X86
;
52 typedef struct _MMPTE_SOFTWARE
59 ULONG PageFileHigh
:20;
62 typedef struct _MMPTE_TRANSITION
72 ULONG PageFrameNumber
:20;
75 typedef struct _MMPTE_PROTOTYPE
78 ULONG ProtoAddressLow
:7;
82 ULONG ProtoAddressHigh
:21;
85 typedef struct _MMPTE_SUBSECTION
88 ULONG SubsectionAddressLow
:4;
91 ULONG SubsectionAddressHigh
:20;
95 typedef struct _MMPTE_LIST
105 typedef struct _MMPTE_HARDWARE
110 ULONG WriteThrough
:1;
111 ULONG CacheDisable
:1;
119 ULONG PageFrameNumber
:20;
120 } MMPTE_HARDWARE
, *PMMPTE_HARDWARE
;
124 typedef struct _MMPTE_HARDWARE
129 ULONG WriteThrough
:1;
130 ULONG CacheDisable
:1;
138 ULONG PageFrameNumber
:20;
139 } MMPTE_HARDWARE
, *PMMPTE_HARDWARE
;
144 // Use the right PTE structure
146 #define HARDWARE_PTE HARDWARE_PTE_X86
147 #define PHARDWARE_PTE PHARDWARE_PTE_X86