]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - MdeModulePkg/Universal/CapsulePei/Capsule.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdeModulePkg / Universal / CapsulePei / Capsule.h
... / ...
CommitLineData
1/** @file\r
2\r
3Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
4\r
5SPDX-License-Identifier: BSD-2-Clause-Patent\r
6\r
7**/\r
8\r
9#ifndef _CAPSULE_PEIM_H_\r
10#define _CAPSULE_PEIM_H_\r
11\r
12#include <PiPei.h>\r
13#include <Uefi/UefiSpec.h>\r
14\r
15#include <Ppi/Capsule.h>\r
16#include <Ppi/LoadFile.h>\r
17#include <Ppi/ReadOnlyVariable2.h>\r
18#include <Guid/CapsuleVendor.h>\r
19\r
20#include <Library/BaseLib.h>\r
21#include <Library/DebugLib.h>\r
22#include <Library/PeimEntryPoint.h>\r
23#include <Library/PeiServicesLib.h>\r
24#include <Library/BaseMemoryLib.h>\r
25#include <Library/HobLib.h>\r
26#include <Library/PeiServicesTablePointerLib.h>\r
27#include <Library/PrintLib.h>\r
28#include <Library/PeCoffLib.h>\r
29#include <Library/PeCoffGetEntryPointLib.h>\r
30#include <Library/PcdLib.h>\r
31#include <Library/ReportStatusCodeLib.h>\r
32#include <Library/DebugAgentLib.h>\r
33#include <Library/MemoryAllocationLib.h>\r
34#include <IndustryStandard/PeImage.h>\r
35#include "Common/CommonHeader.h"\r
36\r
37#ifdef MDE_CPU_IA32\r
38\r
39 #pragma pack(1)\r
40\r
41//\r
42// Page-Map Level-4 Offset (PML4) and\r
43// Page-Directory-Pointer Offset (PDPE) entries 4K & 2MB\r
44//\r
45\r
46typedef union {\r
47 struct {\r
48 UINT64 Present : 1; // 0 = Not present in memory, 1 = Present in memory\r
49 UINT64 ReadWrite : 1; // 0 = Read-Only, 1= Read/Write\r
50 UINT64 UserSupervisor : 1; // 0 = Supervisor, 1=User\r
51 UINT64 WriteThrough : 1; // 0 = Write-Back caching, 1=Write-Through caching\r
52 UINT64 CacheDisabled : 1; // 0 = Cached, 1=Non-Cached\r
53 UINT64 Accessed : 1; // 0 = Not accessed, 1 = Accessed (set by CPU)\r
54 UINT64 Reserved : 1; // Reserved\r
55 UINT64 MustBeZero : 2; // Must Be Zero\r
56 UINT64 Available : 3; // Available for use by system software\r
57 UINT64 PageTableBaseAddress : 40; // Page Table Base Address\r
58 UINT64 AvabilableHigh : 11; // Available for use by system software\r
59 UINT64 Nx : 1; // No Execute bit\r
60 } Bits;\r
61 UINT64 Uint64;\r
62} PAGE_MAP_AND_DIRECTORY_POINTER;\r
63\r
64//\r
65// Page Table Entry 2MB\r
66//\r
67typedef union {\r
68 struct {\r
69 UINT64 Present : 1; // 0 = Not present in memory, 1 = Present in memory\r
70 UINT64 ReadWrite : 1; // 0 = Read-Only, 1= Read/Write\r
71 UINT64 UserSupervisor : 1; // 0 = Supervisor, 1=User\r
72 UINT64 WriteThrough : 1; // 0 = Write-Back caching, 1=Write-Through caching\r
73 UINT64 CacheDisabled : 1; // 0 = Cached, 1=Non-Cached\r
74 UINT64 Accessed : 1; // 0 = Not accessed, 1 = Accessed (set by CPU)\r
75 UINT64 Dirty : 1; // 0 = Not Dirty, 1 = written by processor on access to page\r
76 UINT64 MustBe1 : 1; // Must be 1\r
77 UINT64 Global : 1; // 0 = Not global page, 1 = global page TLB not cleared on CR3 write\r
78 UINT64 Available : 3; // Available for use by system software\r
79 UINT64 PAT : 1; //\r
80 UINT64 MustBeZero : 8; // Must be zero;\r
81 UINT64 PageTableBaseAddress : 31; // Page Table Base Address\r
82 UINT64 AvabilableHigh : 11; // Available for use by system software\r
83 UINT64 Nx : 1; // 0 = Execute Code, 1 = No Code Execution\r
84 } Bits;\r
85 UINT64 Uint64;\r
86} PAGE_TABLE_ENTRY;\r
87\r
88//\r
89// Page Table Entry 1GB\r
90//\r
91typedef union {\r
92 struct {\r
93 UINT64 Present : 1; // 0 = Not present in memory, 1 = Present in memory\r
94 UINT64 ReadWrite : 1; // 0 = Read-Only, 1= Read/Write\r
95 UINT64 UserSupervisor : 1; // 0 = Supervisor, 1=User\r
96 UINT64 WriteThrough : 1; // 0 = Write-Back caching, 1=Write-Through caching\r
97 UINT64 CacheDisabled : 1; // 0 = Cached, 1=Non-Cached\r
98 UINT64 Accessed : 1; // 0 = Not accessed, 1 = Accessed (set by CPU)\r
99 UINT64 Dirty : 1; // 0 = Not Dirty, 1 = written by processor on access to page\r
100 UINT64 MustBe1 : 1; // Must be 1\r
101 UINT64 Global : 1; // 0 = Not global page, 1 = global page TLB not cleared on CR3 write\r
102 UINT64 Available : 3; // Available for use by system software\r
103 UINT64 PAT : 1; //\r
104 UINT64 MustBeZero : 17; // Must be zero;\r
105 UINT64 PageTableBaseAddress : 22; // Page Table Base Address\r
106 UINT64 AvabilableHigh : 11; // Available for use by system software\r
107 UINT64 Nx : 1; // 0 = Execute Code, 1 = No Code Execution\r
108 } Bits;\r
109 UINT64 Uint64;\r
110} PAGE_TABLE_1G_ENTRY;\r
111\r
112 #pragma pack()\r
113\r
114typedef\r
115EFI_STATUS\r
116(*COALESCE_ENTRY) (\r
117 SWITCH_32_TO_64_CONTEXT *EntrypointContext,\r
118 SWITCH_64_TO_32_CONTEXT *ReturnContext\r
119 );\r
120\r
121#endif\r
122\r
123#endif\r