1 /** @file 2 Definitions for data structures used in S3 resume. 3 4 Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR> 5 6 This program and the accompanying materials 7 are licensed and made available under the terms and conditions 8 of the BSD License which accompanies this distribution. The 9 full text of the license may be found at 10 http://opensource.org/licenses/bsd-license.php 11 12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 14 15 **/ 16 17 #ifndef _ACPI_S3_DATA_H_ 18 #define _ACPI_S3_DATA_H_ 19 20 #include <Library/BaseLib.h> 21 22 #define SMM_S3_RESUME_SMM_32 SIGNATURE_64 ('S','M','M','S','3','_','3','2') 23 #define SMM_S3_RESUME_SMM_64 SIGNATURE_64 ('S','M','M','S','3','_','6','4') 24 25 #pragma pack(1) 26 27 typedef struct { 28 UINT64 Signature; 29 EFI_PHYSICAL_ADDRESS SmmS3ResumeEntryPoint; 30 EFI_PHYSICAL_ADDRESS SmmS3StackBase; 31 UINT64 SmmS3StackSize; 32 UINT64 SmmS3Cr0; 33 UINT64 SmmS3Cr3; 34 UINT64 SmmS3Cr4; 35 UINT16 ReturnCs; 36 EFI_PHYSICAL_ADDRESS ReturnEntryPoint; 37 EFI_PHYSICAL_ADDRESS ReturnContext1; 38 EFI_PHYSICAL_ADDRESS ReturnContext2; 39 EFI_PHYSICAL_ADDRESS ReturnStackPointer; 40 EFI_PHYSICAL_ADDRESS Smst; 41 } SMM_S3_RESUME_STATE; 42 43 44 typedef struct { 45 EFI_PHYSICAL_ADDRESS AcpiFacsTable; 46 EFI_PHYSICAL_ADDRESS IdtrProfile; 47 EFI_PHYSICAL_ADDRESS S3NvsPageTableAddress; 48 EFI_PHYSICAL_ADDRESS BootScriptStackBase; 49 UINT64 BootScriptStackSize; 50 EFI_PHYSICAL_ADDRESS S3DebugBufferAddress; 51 } ACPI_S3_CONTEXT; 52 53 typedef struct { 54 UINT16 ReturnCs; 55 UINT64 ReturnStatus; 56 EFI_PHYSICAL_ADDRESS ReturnEntryPoint; 57 EFI_PHYSICAL_ADDRESS ReturnStackPointer; 58 EFI_PHYSICAL_ADDRESS AsmTransferControl; 59 IA32_DESCRIPTOR Idtr; 60 } PEI_S3_RESUME_STATE; 61 62 #pragma pack() 63 64 #define EFI_ACPI_S3_CONTEXT_GUID \ 65 { \ 66 0xef98d3a, 0x3e33, 0x497a, {0xa4, 0x1, 0x77, 0xbe, 0x3e, 0xb7, 0x4f, 0x38} \ 67 } 68 69 extern EFI_GUID gEfiAcpiS3ContextGuid; 70 71 extern EFI_GUID gEfiAcpiVariableGuid; 72 73 #endif 74