VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/FirmwareNew/MdeModulePkg/Library/PiDxeS3BootScriptLib/InternalBootScriptLib.h@ 78223

Last change on this file since 78223 was 77662, checked in by vboxsync, 6 years ago

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

  • Property svn:eol-style set to native
File size: 3.5 KB
Line 
1/** @file
2 Support for S3 boot script lib. This file defined some internal macro and internal
3 data structure
4
5 Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
6
7 This program and the accompanying materials
8 are licensed and made available under the terms and conditions
9 of the BSD License which accompanies this distribution. The
10 full text of the license may be found at
11 http://opensource.org/licenses/bsd-license.php
12
13 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
14 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
15
16**/
17#ifndef __INTERNAL_BOOT_SCRIPT_LIB__
18#define __INTERNAL_BOOT_SCRIPT_LIB__
19
20#include <PiDxe.h>
21
22#include <Guid/EventGroup.h>
23#include <Protocol/SmmBase2.h>
24#include <Protocol/DxeSmmReadyToLock.h>
25#include <Protocol/SmmReadyToLock.h>
26#include <Protocol/SmmExitBootServices.h>
27#include <Protocol/SmmLegacyBoot.h>
28
29#include <Library/S3BootScriptLib.h>
30
31#include <Library/UefiBootServicesTableLib.h>
32#include <Library/BaseLib.h>
33#include <Library/PcdLib.h>
34#include <Library/SmbusLib.h>
35#include <Library/IoLib.h>
36#include <Library/PciSegmentLib.h>
37#include <Library/DebugLib.h>
38#include <Library/BaseMemoryLib.h>
39#include <Library/TimerLib.h>
40#include <Library/UefiLib.h>
41#include <Library/LockBoxLib.h>
42
43#include "BootScriptInternalFormat.h"
44
45#define MAX_IO_ADDRESS 0xFFFF
46
47//
48// Macro to convert a UEFI PCI address + segment to a PCI Segment Library PCI address
49//
50#define PCI_ADDRESS_ENCODE(S, A) PCI_SEGMENT_LIB_ADDRESS( \
51 S, \
52 ((((UINTN)(A)) & 0xff000000) >> 24), \
53 ((((UINTN)(A)) & 0x00ff0000) >> 16), \
54 ((((UINTN)(A)) & 0xff00) >> 8), \
55 ((RShiftU64 ((A), 32) & 0xfff) | ((A) & 0xff)) \
56 )
57
58typedef union {
59 UINT8 volatile *Buf;
60 UINT8 volatile *Uint8;
61 UINT16 volatile *Uint16;
62 UINT32 volatile *Uint32;
63 UINT64 volatile *Uint64;
64 UINTN volatile Uint;
65} PTR;
66
67
68// Minimum and maximum length for SMBus bus block protocols defined in SMBus spec 2.0.
69//
70#define MIN_SMBUS_BLOCK_LEN 1
71#define MAX_SMBUS_BLOCK_LEN 32
72
73//
74// The boot script private data.
75//
76typedef struct {
77 UINT8 *TableBase;
78 UINT32 TableLength; // Record the actual memory length
79 UINT16 TableMemoryPageNumber; // Record the page number Allocated for the table
80 BOOLEAN InSmm; // Record if this library is in SMM.
81 BOOLEAN AtRuntime; // Record if current state is after SmmExitBootServices or SmmLegacyBoot.
82 UINT32 BootTimeScriptLength; // Maintain boot time script length in LockBox after SmmReadyToLock in SMM.
83 BOOLEAN SmmLocked; // Record if current state is after SmmReadyToLock
84 BOOLEAN BackFromS3; // Indicate that the system is back from S3.
85} SCRIPT_TABLE_PRIVATE_DATA;
86
87typedef
88EFI_STATUS
89(EFIAPI *DISPATCH_ENTRYPOINT_FUNC) (
90 IN EFI_HANDLE ImageHandle,
91 IN VOID *Context
92 );
93
94extern SCRIPT_TABLE_PRIVATE_DATA *mS3BootScriptTablePtr;
95
96//
97// Define Opcode for Label which is implementation specific and no standard spec define.
98//
99#define S3_BOOT_SCRIPT_LIB_LABEL_OPCODE 0xFE
100
101///
102/// The opcode indicate the start of the boot script table.
103///
104#define S3_BOOT_SCRIPT_LIB_TABLE_OPCODE 0xAA
105///
106/// The opcode indicate the end of the boot script table.
107///
108#define S3_BOOT_SCRIPT_LIB_TERMINATE_OPCODE 0xFF
109
110
111#endif //__INTERNAL_BOOT_SCRIPT_LIB__
112
Note: See TracBrowser for help on using the repository browser.

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