OpenCore
1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
VirtualMemory.h
Go to the documentation of this file.
1
21
#ifndef _VIRTUAL_MEMORY_H_
22
#define _VIRTUAL_MEMORY_H_
23
24
#include <stdint.h>
25
26
#pragma pack(1)
27
28
//
29
// Page-Map Level-4 Offset (PML4) and
30
// Page-Directory-Pointer Offset (PDPE) entries 4K & 2MB
31
//
32
33
typedef
union
{
34
struct
{
35
uint64_t
Present
:1;
// 0 = Not present in memory, 1 = Present in memory
36
uint64_t
ReadWrite
:1;
// 0 = Read-Only, 1= Read/Write
37
uint64_t
UserSupervisor
:1;
// 0 = Supervisor, 1=User
38
uint64_t
WriteThrough
:1;
// 0 = Write-Back caching, 1=Write-Through caching
39
uint64_t
CacheDisabled
:1;
// 0 = Cached, 1=Non-Cached
40
uint64_t
Accessed
:1;
// 0 = Not accessed, 1 = Accessed (set by CPU)
41
uint64_t
Reserved
:1;
// Reserved
42
uint64_t
MustBeZero
:2;
// Must Be Zero
43
uint64_t
Available
:3;
// Available for use by system software
44
uint64_t
PageTableBaseAddress
:40;
// Page Table Base Address
45
uint64_t
AvabilableHigh
:11;
// Available for use by system software
46
uint64_t
Nx
:1;
// No Execute bit
47
} Bits;
48
uint64_t
Uint64
;
49
}
X64_PAGE_MAP_AND_DIRECTORY_POINTER_2MB_4K
;
50
51
//
52
// Page-Directory Offset 4K
53
//
54
typedef
union
{
55
struct
{
56
uint64_t
Present
:1;
// 0 = Not present in memory, 1 = Present in memory
57
uint64_t
ReadWrite
:1;
// 0 = Read-Only, 1= Read/Write
58
uint64_t
UserSupervisor
:1;
// 0 = Supervisor, 1=User
59
uint64_t
WriteThrough
:1;
// 0 = Write-Back caching, 1=Write-Through caching
60
uint64_t
CacheDisabled
:1;
// 0 = Cached, 1=Non-Cached
61
uint64_t
Accessed
:1;
// 0 = Not accessed, 1 = Accessed (set by CPU)
62
uint64_t
Reserved
:1;
// Reserved
63
uint64_t
MustBeZero
:1;
// Must Be Zero
64
uint64_t
Reserved2
:1;
// Reserved
65
uint64_t
Available
:3;
// Available for use by system software
66
uint64_t
PageTableBaseAddress
:40;
// Page Table Base Address
67
uint64_t
AvabilableHigh
:11;
// Available for use by system software
68
uint64_t
Nx
:1;
// No Execute bit
69
} Bits;
70
uint64_t
Uint64
;
71
}
X64_PAGE_DIRECTORY_ENTRY_4K
;
72
73
//
74
// Page Table Entry 4K
75
//
76
typedef
union
{
77
struct
{
78
uint64_t
Present
:1;
// 0 = Not present in memory, 1 = Present in memory
79
uint64_t
ReadWrite
:1;
// 0 = Read-Only, 1= Read/Write
80
uint64_t
UserSupervisor
:1;
// 0 = Supervisor, 1=User
81
uint64_t
WriteThrough
:1;
// 0 = Write-Back caching, 1=Write-Through caching
82
uint64_t
CacheDisabled
:1;
// 0 = Cached, 1=Non-Cached
83
uint64_t
Accessed
:1;
// 0 = Not accessed, 1 = Accessed (set by CPU)
84
uint64_t
Dirty
:1;
// 0 = Not Dirty, 1 = written by processor on access to page
85
uint64_t
PAT
:1;
// 0 = Ignore Page Attribute Table
86
uint64_t
Global
:1;
// 0 = Not global page, 1 = global page TLB not cleared on CR3 write
87
uint64_t
Available
:3;
// Available for use by system software
88
uint64_t
PageTableBaseAddress
:40;
// Page Table Base Address
89
uint64_t
AvabilableHigh
:11;
// Available for use by system software
90
uint64_t
Nx
:1;
// 0 = Execute Code, 1 = No Code Execution
91
} Bits;
92
uint64_t
Uint64
;
93
}
X64_PAGE_TABLE_ENTRY_4K
;
94
95
96
//
97
// Page Table Entry 2MB
98
//
99
typedef
union
{
100
struct
{
101
uint64_t
Present
:1;
// 0 = Not present in memory, 1 = Present in memory
102
uint64_t
ReadWrite
:1;
// 0 = Read-Only, 1= Read/Write
103
uint64_t
UserSupervisor
:1;
// 0 = Supervisor, 1=User
104
uint64_t
WriteThrough
:1;
// 0 = Write-Back caching, 1=Write-Through caching
105
uint64_t
CacheDisabled
:1;
// 0 = Cached, 1=Non-Cached
106
uint64_t
Accessed
:1;
// 0 = Not accessed, 1 = Accessed (set by CPU)
107
uint64_t
Dirty
:1;
// 0 = Not Dirty, 1 = written by processor on access to page
108
uint64_t
MustBe1
:1;
// Must be 1
109
uint64_t
Global
:1;
// 0 = Not global page, 1 = global page TLB not cleared on CR3 write
110
uint64_t
Available
:3;
// Available for use by system software
111
uint64_t
PAT
:1;
//
112
uint64_t
MustBeZero
:8;
// Must be zero;
113
uint64_t
PageTableBaseAddress
:31;
// Page Table Base Address
114
uint64_t
AvabilableHigh
:11;
// Available for use by system software
115
uint64_t
Nx
:1;
// 0 = Execute Code, 1 = No Code Execution
116
} Bits;
117
uint64_t
Uint64
;
118
}
X64_PAGE_TABLE_ENTRY_2M
;
119
120
#pragma pack()
121
122
#endif
uint64_t
UINT64 uint64_t
Definition
libDER_config.h:27
X64_PAGE_DIRECTORY_ENTRY_4K
Definition
VirtualMemory.h:54
X64_PAGE_DIRECTORY_ENTRY_4K::WriteThrough
uint64_t WriteThrough
Definition
VirtualMemory.h:59
X64_PAGE_DIRECTORY_ENTRY_4K::ReadWrite
uint64_t ReadWrite
Definition
VirtualMemory.h:57
X64_PAGE_DIRECTORY_ENTRY_4K::PageTableBaseAddress
uint64_t PageTableBaseAddress
Definition
VirtualMemory.h:66
X64_PAGE_DIRECTORY_ENTRY_4K::Present
uint64_t Present
Definition
VirtualMemory.h:56
X64_PAGE_DIRECTORY_ENTRY_4K::Reserved
uint64_t Reserved
Definition
VirtualMemory.h:62
X64_PAGE_DIRECTORY_ENTRY_4K::Uint64
uint64_t Uint64
Definition
VirtualMemory.h:70
X64_PAGE_DIRECTORY_ENTRY_4K::Nx
uint64_t Nx
Definition
VirtualMemory.h:68
X64_PAGE_DIRECTORY_ENTRY_4K::Reserved2
uint64_t Reserved2
Definition
VirtualMemory.h:64
X64_PAGE_DIRECTORY_ENTRY_4K::UserSupervisor
uint64_t UserSupervisor
Definition
VirtualMemory.h:58
X64_PAGE_DIRECTORY_ENTRY_4K::Available
uint64_t Available
Definition
VirtualMemory.h:65
X64_PAGE_DIRECTORY_ENTRY_4K::Accessed
uint64_t Accessed
Definition
VirtualMemory.h:61
X64_PAGE_DIRECTORY_ENTRY_4K::CacheDisabled
uint64_t CacheDisabled
Definition
VirtualMemory.h:60
X64_PAGE_DIRECTORY_ENTRY_4K::MustBeZero
uint64_t MustBeZero
Definition
VirtualMemory.h:63
X64_PAGE_DIRECTORY_ENTRY_4K::AvabilableHigh
uint64_t AvabilableHigh
Definition
VirtualMemory.h:67
X64_PAGE_MAP_AND_DIRECTORY_POINTER_2MB_4K
Definition
VirtualMemory.h:33
X64_PAGE_MAP_AND_DIRECTORY_POINTER_2MB_4K::PageTableBaseAddress
uint64_t PageTableBaseAddress
Definition
VirtualMemory.h:44
X64_PAGE_MAP_AND_DIRECTORY_POINTER_2MB_4K::WriteThrough
uint64_t WriteThrough
Definition
VirtualMemory.h:38
X64_PAGE_MAP_AND_DIRECTORY_POINTER_2MB_4K::CacheDisabled
uint64_t CacheDisabled
Definition
VirtualMemory.h:39
X64_PAGE_MAP_AND_DIRECTORY_POINTER_2MB_4K::ReadWrite
uint64_t ReadWrite
Definition
VirtualMemory.h:36
X64_PAGE_MAP_AND_DIRECTORY_POINTER_2MB_4K::UserSupervisor
uint64_t UserSupervisor
Definition
VirtualMemory.h:37
X64_PAGE_MAP_AND_DIRECTORY_POINTER_2MB_4K::Available
uint64_t Available
Definition
VirtualMemory.h:43
X64_PAGE_MAP_AND_DIRECTORY_POINTER_2MB_4K::AvabilableHigh
uint64_t AvabilableHigh
Definition
VirtualMemory.h:45
X64_PAGE_MAP_AND_DIRECTORY_POINTER_2MB_4K::MustBeZero
uint64_t MustBeZero
Definition
VirtualMemory.h:42
X64_PAGE_MAP_AND_DIRECTORY_POINTER_2MB_4K::Accessed
uint64_t Accessed
Definition
VirtualMemory.h:40
X64_PAGE_MAP_AND_DIRECTORY_POINTER_2MB_4K::Present
uint64_t Present
Definition
VirtualMemory.h:35
X64_PAGE_MAP_AND_DIRECTORY_POINTER_2MB_4K::Reserved
uint64_t Reserved
Definition
VirtualMemory.h:41
X64_PAGE_MAP_AND_DIRECTORY_POINTER_2MB_4K::Nx
uint64_t Nx
Definition
VirtualMemory.h:46
X64_PAGE_MAP_AND_DIRECTORY_POINTER_2MB_4K::Uint64
uint64_t Uint64
Definition
VirtualMemory.h:48
X64_PAGE_TABLE_ENTRY_2M
Definition
VirtualMemory.h:99
X64_PAGE_TABLE_ENTRY_2M::Nx
uint64_t Nx
Definition
VirtualMemory.h:115
X64_PAGE_TABLE_ENTRY_2M::MustBeZero
uint64_t MustBeZero
Definition
VirtualMemory.h:112
X64_PAGE_TABLE_ENTRY_2M::WriteThrough
uint64_t WriteThrough
Definition
VirtualMemory.h:104
X64_PAGE_TABLE_ENTRY_2M::CacheDisabled
uint64_t CacheDisabled
Definition
VirtualMemory.h:105
X64_PAGE_TABLE_ENTRY_2M::UserSupervisor
uint64_t UserSupervisor
Definition
VirtualMemory.h:103
X64_PAGE_TABLE_ENTRY_2M::Accessed
uint64_t Accessed
Definition
VirtualMemory.h:106
X64_PAGE_TABLE_ENTRY_2M::Present
uint64_t Present
Definition
VirtualMemory.h:101
X64_PAGE_TABLE_ENTRY_2M::Uint64
uint64_t Uint64
Definition
VirtualMemory.h:117
X64_PAGE_TABLE_ENTRY_2M::ReadWrite
uint64_t ReadWrite
Definition
VirtualMemory.h:102
X64_PAGE_TABLE_ENTRY_2M::AvabilableHigh
uint64_t AvabilableHigh
Definition
VirtualMemory.h:114
X64_PAGE_TABLE_ENTRY_2M::Global
uint64_t Global
Definition
VirtualMemory.h:109
X64_PAGE_TABLE_ENTRY_2M::PageTableBaseAddress
uint64_t PageTableBaseAddress
Definition
VirtualMemory.h:113
X64_PAGE_TABLE_ENTRY_2M::Available
uint64_t Available
Definition
VirtualMemory.h:110
X64_PAGE_TABLE_ENTRY_2M::PAT
uint64_t PAT
Definition
VirtualMemory.h:111
X64_PAGE_TABLE_ENTRY_2M::Dirty
uint64_t Dirty
Definition
VirtualMemory.h:107
X64_PAGE_TABLE_ENTRY_2M::MustBe1
uint64_t MustBe1
Definition
VirtualMemory.h:108
X64_PAGE_TABLE_ENTRY_4K
Definition
VirtualMemory.h:76
X64_PAGE_TABLE_ENTRY_4K::Present
uint64_t Present
Definition
VirtualMemory.h:78
X64_PAGE_TABLE_ENTRY_4K::PAT
uint64_t PAT
Definition
VirtualMemory.h:85
X64_PAGE_TABLE_ENTRY_4K::Accessed
uint64_t Accessed
Definition
VirtualMemory.h:83
X64_PAGE_TABLE_ENTRY_4K::PageTableBaseAddress
uint64_t PageTableBaseAddress
Definition
VirtualMemory.h:88
X64_PAGE_TABLE_ENTRY_4K::Available
uint64_t Available
Definition
VirtualMemory.h:87
X64_PAGE_TABLE_ENTRY_4K::Global
uint64_t Global
Definition
VirtualMemory.h:86
X64_PAGE_TABLE_ENTRY_4K::UserSupervisor
uint64_t UserSupervisor
Definition
VirtualMemory.h:80
X64_PAGE_TABLE_ENTRY_4K::AvabilableHigh
uint64_t AvabilableHigh
Definition
VirtualMemory.h:89
X64_PAGE_TABLE_ENTRY_4K::Dirty
uint64_t Dirty
Definition
VirtualMemory.h:84
X64_PAGE_TABLE_ENTRY_4K::CacheDisabled
uint64_t CacheDisabled
Definition
VirtualMemory.h:82
X64_PAGE_TABLE_ENTRY_4K::ReadWrite
uint64_t ReadWrite
Definition
VirtualMemory.h:79
X64_PAGE_TABLE_ENTRY_4K::WriteThrough
uint64_t WriteThrough
Definition
VirtualMemory.h:81
X64_PAGE_TABLE_ENTRY_4K::Uint64
uint64_t Uint64
Definition
VirtualMemory.h:92
X64_PAGE_TABLE_ENTRY_4K::Nx
uint64_t Nx
Definition
VirtualMemory.h:90
Utilities
BaseTools
VirtualMemory.h
Generated by
1.12.0