]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/CapsulePei/Capsule.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdeModulePkg / Universal / CapsulePei / Capsule.h
CommitLineData
da58b0db 1/** @file\r
2\r
d1102dba 3Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
da58b0db 4\r
9d510e61 5SPDX-License-Identifier: BSD-2-Clause-Patent\r
da58b0db 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
ab7017fe 16#include <Ppi/LoadFile.h>\r
da58b0db 17#include <Ppi/ReadOnlyVariable2.h>\r
18#include <Guid/CapsuleVendor.h>\r
19\r
359cb1a3 20#include <Library/BaseLib.h>\r
da58b0db 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
ab7017fe 28#include <Library/PeCoffLib.h>\r
29#include <Library/PeCoffGetEntryPointLib.h>\r
30#include <Library/PcdLib.h>\r
31#include <Library/ReportStatusCodeLib.h>\r
933d80a1 32#include <Library/DebugAgentLib.h>\r
27052c21 33#include <Library/MemoryAllocationLib.h>\r
ab7017fe 34#include <IndustryStandard/PeImage.h>\r
35#include "Common/CommonHeader.h"\r
36\r
d1102dba 37#ifdef MDE_CPU_IA32\r
4e4f13d2 38\r
1436aea4 39 #pragma pack(1)\r
da58b0db 40\r
41//\r
ab7017fe 42// Page-Map Level-4 Offset (PML4) and\r
43// Page-Directory-Pointer Offset (PDPE) entries 4K & 2MB\r
da58b0db 44//\r
ab7017fe 45\r
46typedef union {\r
47 struct {\r
1436aea4
MK
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
ab7017fe 60 } Bits;\r
61 UINT64 Uint64;\r
62} PAGE_MAP_AND_DIRECTORY_POINTER;\r
da58b0db 63\r
64//\r
ab7017fe 65// Page Table Entry 2MB\r
da58b0db 66//\r
ab7017fe 67typedef union {\r
68 struct {\r
1436aea4
MK
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
ab7017fe 84 } Bits;\r
85 UINT64 Uint64;\r
86} PAGE_TABLE_ENTRY;\r
da58b0db 87\r
c56b6566
JY
88//\r
89// Page Table Entry 1GB\r
90//\r
91typedef union {\r
92 struct {\r
1436aea4
MK
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
c56b6566
JY
108 } Bits;\r
109 UINT64 Uint64;\r
110} PAGE_TABLE_1G_ENTRY;\r
111\r
1436aea4 112 #pragma pack()\r
da58b0db 113\r
ab7017fe 114typedef\r
115EFI_STATUS\r
116(*COALESCE_ENTRY) (\r
1436aea4
MK
117 SWITCH_32_TO_64_CONTEXT *EntrypointContext,\r
118 SWITCH_64_TO_32_CONTEXT *ReturnContext\r
ab7017fe 119 );\r
da58b0db 120\r
121#endif\r
4e4f13d2 122\r
123#endif\r