VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/FirmwareNew/MdeModulePkg/Universal/CapsulePei/Capsule.h@ 77662

最後變更 在這個檔案從77662是 77662,由 vboxsync 提交於 6 年 前

EFI: First step in UDK2018 merge. Does not build yet.

  • 屬性 svn:eol-style 設為 native
檔案大小: 4.8 KB
 
1/** @file
2
3Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
4
5This program and the accompanying materials
6are licensed and made available under the terms and conditions
7of the BSD License which accompanies this distribution. The
8full text of the license may be found at
9http://opensource.org/licenses/bsd-license.php
10
11THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14**/
15
16#ifndef _CAPSULE_PEIM_H_
17#define _CAPSULE_PEIM_H_
18
19#include <PiPei.h>
20#include <Uefi/UefiSpec.h>
21
22#include <Ppi/Capsule.h>
23#include <Ppi/LoadFile.h>
24#include <Ppi/ReadOnlyVariable2.h>
25#include <Guid/CapsuleVendor.h>
26
27#include <Library/BaseLib.h>
28#include <Library/DebugLib.h>
29#include <Library/PeimEntryPoint.h>
30#include <Library/PeiServicesLib.h>
31#include <Library/BaseMemoryLib.h>
32#include <Library/HobLib.h>
33#include <Library/PeiServicesTablePointerLib.h>
34#include <Library/PrintLib.h>
35#include <Library/PeCoffLib.h>
36#include <Library/PeCoffGetEntryPointLib.h>
37#include <Library/PcdLib.h>
38#include <Library/ReportStatusCodeLib.h>
39#include <Library/DebugAgentLib.h>
40#include <IndustryStandard/PeImage.h>
41#include "Common/CommonHeader.h"
42
43#ifdef MDE_CPU_IA32
44
45#pragma pack(1)
46
47//
48// Page-Map Level-4 Offset (PML4) and
49// Page-Directory-Pointer Offset (PDPE) entries 4K & 2MB
50//
51
52typedef union {
53 struct {
54 UINT64 Present:1; // 0 = Not present in memory, 1 = Present in memory
55 UINT64 ReadWrite:1; // 0 = Read-Only, 1= Read/Write
56 UINT64 UserSupervisor:1; // 0 = Supervisor, 1=User
57 UINT64 WriteThrough:1; // 0 = Write-Back caching, 1=Write-Through caching
58 UINT64 CacheDisabled:1; // 0 = Cached, 1=Non-Cached
59 UINT64 Accessed:1; // 0 = Not accessed, 1 = Accessed (set by CPU)
60 UINT64 Reserved:1; // Reserved
61 UINT64 MustBeZero:2; // Must Be Zero
62 UINT64 Available:3; // Available for use by system software
63 UINT64 PageTableBaseAddress:40; // Page Table Base Address
64 UINT64 AvabilableHigh:11; // Available for use by system software
65 UINT64 Nx:1; // No Execute bit
66 } Bits;
67 UINT64 Uint64;
68} PAGE_MAP_AND_DIRECTORY_POINTER;
69
70//
71// Page Table Entry 2MB
72//
73typedef union {
74 struct {
75 UINT64 Present:1; // 0 = Not present in memory, 1 = Present in memory
76 UINT64 ReadWrite:1; // 0 = Read-Only, 1= Read/Write
77 UINT64 UserSupervisor:1; // 0 = Supervisor, 1=User
78 UINT64 WriteThrough:1; // 0 = Write-Back caching, 1=Write-Through caching
79 UINT64 CacheDisabled:1; // 0 = Cached, 1=Non-Cached
80 UINT64 Accessed:1; // 0 = Not accessed, 1 = Accessed (set by CPU)
81 UINT64 Dirty:1; // 0 = Not Dirty, 1 = written by processor on access to page
82 UINT64 MustBe1:1; // Must be 1
83 UINT64 Global:1; // 0 = Not global page, 1 = global page TLB not cleared on CR3 write
84 UINT64 Available:3; // Available for use by system software
85 UINT64 PAT:1; //
86 UINT64 MustBeZero:8; // Must be zero;
87 UINT64 PageTableBaseAddress:31; // Page Table Base Address
88 UINT64 AvabilableHigh:11; // Available for use by system software
89 UINT64 Nx:1; // 0 = Execute Code, 1 = No Code Execution
90 } Bits;
91 UINT64 Uint64;
92} PAGE_TABLE_ENTRY;
93
94//
95// Page Table Entry 1GB
96//
97typedef union {
98 struct {
99 UINT64 Present:1; // 0 = Not present in memory, 1 = Present in memory
100 UINT64 ReadWrite:1; // 0 = Read-Only, 1= Read/Write
101 UINT64 UserSupervisor:1; // 0 = Supervisor, 1=User
102 UINT64 WriteThrough:1; // 0 = Write-Back caching, 1=Write-Through caching
103 UINT64 CacheDisabled:1; // 0 = Cached, 1=Non-Cached
104 UINT64 Accessed:1; // 0 = Not accessed, 1 = Accessed (set by CPU)
105 UINT64 Dirty:1; // 0 = Not Dirty, 1 = written by processor on access to page
106 UINT64 MustBe1:1; // Must be 1
107 UINT64 Global:1; // 0 = Not global page, 1 = global page TLB not cleared on CR3 write
108 UINT64 Available:3; // Available for use by system software
109 UINT64 PAT:1; //
110 UINT64 MustBeZero:17; // Must be zero;
111 UINT64 PageTableBaseAddress:22; // Page Table Base Address
112 UINT64 AvabilableHigh:11; // Available for use by system software
113 UINT64 Nx:1; // 0 = Execute Code, 1 = No Code Execution
114 } Bits;
115 UINT64 Uint64;
116} PAGE_TABLE_1G_ENTRY;
117
118#pragma pack()
119
120typedef
121EFI_STATUS
122(*COALESCE_ENTRY) (
123 SWITCH_32_TO_64_CONTEXT *EntrypointContext,
124 SWITCH_64_TO_32_CONTEXT *ReturnContext
125 );
126
127#endif
128
129#endif
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette