1 /** @file 2 Definitions for data structures used in S3 resume. 3 4 Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR> 5 6 SPDX-License-Identifier: BSD-2-Clause-Patent 7 8 **/ 9 10 #ifndef _ACPI_S3_DATA_H_ 11 #define _ACPI_S3_DATA_H_ 12 13 #include <Library/BaseLib.h> 14 15 #define SMM_S3_RESUME_SMM_32 SIGNATURE_64 ('S','M','M','S','3','_','3','2') 16 #define SMM_S3_RESUME_SMM_64 SIGNATURE_64 ('S','M','M','S','3','_','6','4') 17 18 #pragma pack(1) 19 20 typedef struct { 21 UINT64 Signature; 22 EFI_PHYSICAL_ADDRESS SmmS3ResumeEntryPoint; 23 EFI_PHYSICAL_ADDRESS SmmS3StackBase; 24 UINT64 SmmS3StackSize; 25 UINT64 SmmS3Cr0; 26 UINT64 SmmS3Cr3; 27 UINT64 SmmS3Cr4; 28 UINT16 ReturnCs; 29 EFI_PHYSICAL_ADDRESS ReturnEntryPoint; 30 EFI_PHYSICAL_ADDRESS ReturnContext1; 31 EFI_PHYSICAL_ADDRESS ReturnContext2; 32 EFI_PHYSICAL_ADDRESS ReturnStackPointer; 33 EFI_PHYSICAL_ADDRESS Smst; 34 } SMM_S3_RESUME_STATE; 35 36 37 typedef struct { 38 EFI_PHYSICAL_ADDRESS AcpiFacsTable; 39 EFI_PHYSICAL_ADDRESS IdtrProfile; 40 EFI_PHYSICAL_ADDRESS S3NvsPageTableAddress; 41 EFI_PHYSICAL_ADDRESS BootScriptStackBase; 42 UINT64 BootScriptStackSize; 43 EFI_PHYSICAL_ADDRESS S3DebugBufferAddress; 44 } ACPI_S3_CONTEXT; 45 46 typedef struct { 47 UINT16 ReturnCs; 48 UINT64 ReturnStatus; 49 EFI_PHYSICAL_ADDRESS ReturnEntryPoint; 50 EFI_PHYSICAL_ADDRESS ReturnStackPointer; 51 EFI_PHYSICAL_ADDRESS AsmTransferControl; 52 IA32_DESCRIPTOR Idtr; 53 } PEI_S3_RESUME_STATE; 54 55 #pragma pack() 56 57 #define EFI_ACPI_S3_CONTEXT_GUID \ 58 { \ 59 0xef98d3a, 0x3e33, 0x497a, {0xa4, 0x1, 0x77, 0xbe, 0x3e, 0xb7, 0x4f, 0x38} \ 60 } 61 62 extern EFI_GUID gEfiAcpiS3ContextGuid; 63 64 extern EFI_GUID gEfiAcpiVariableGuid; 65 66 #endif 67