/** @file Definitions for data structures used in S3 resume. Copyright (c) 2011 - 2023, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _ACPI_S3_DATA_H_ #define _ACPI_S3_DATA_H_ #include #define SMM_S3_RESUME_SMM_32 SIGNATURE_64 ('S','M','M','S','3','_','3','2') #define SMM_S3_RESUME_SMM_64 SIGNATURE_64 ('S','M','M','S','3','_','6','4') #pragma pack(1) typedef struct { UINT64 Signature; EFI_PHYSICAL_ADDRESS SmmS3ResumeEntryPoint; EFI_PHYSICAL_ADDRESS SmmS3StackBase; UINT64 SmmS3StackSize; UINT64 SmmS3Cr0; UINT64 SmmS3Cr3; UINT64 SmmS3Cr4; UINT16 ReturnCs; EFI_PHYSICAL_ADDRESS ReturnEntryPoint; EFI_PHYSICAL_ADDRESS ReturnContext1; EFI_PHYSICAL_ADDRESS ReturnContext2; EFI_PHYSICAL_ADDRESS ReturnStackPointer; EFI_PHYSICAL_ADDRESS MpService2Ppi; EFI_PHYSICAL_ADDRESS Smst; } SMM_S3_RESUME_STATE; typedef struct { EFI_PHYSICAL_ADDRESS AcpiFacsTable; EFI_PHYSICAL_ADDRESS IdtrProfile; EFI_PHYSICAL_ADDRESS S3NvsPageTableAddress; EFI_PHYSICAL_ADDRESS BootScriptStackBase; UINT64 BootScriptStackSize; EFI_PHYSICAL_ADDRESS S3DebugBufferAddress; } ACPI_S3_CONTEXT; typedef struct { UINT16 ReturnCs; UINT64 ReturnStatus; EFI_PHYSICAL_ADDRESS ReturnEntryPoint; EFI_PHYSICAL_ADDRESS ReturnStackPointer; EFI_PHYSICAL_ADDRESS AsmTransferControl; IA32_DESCRIPTOR Idtr; } PEI_S3_RESUME_STATE; #pragma pack() #define EFI_ACPI_S3_CONTEXT_GUID \ { \ 0xef98d3a, 0x3e33, 0x497a, {0xa4, 0x1, 0x77, 0xbe, 0x3e, 0xb7, 0x4f, 0x38} \ } extern EFI_GUID gEfiAcpiS3ContextGuid; extern EFI_GUID gEfiAcpiVariableGuid; #endif