From 1c27f926c130284b022501596399205b8c8e4b23 Mon Sep 17 00:00:00 2001 From: Michael Kinney Date: Mon, 19 Oct 2015 19:12:04 +0000 Subject: [PATCH] UefiCpuPkg: Add ACPI CPU Data include file Add AcpuCpuData.h that defines a data structure that is shared between modules and is required for ACPI S3 support. APState field removed between V1 and V2 patch. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Michael Kinney Cc: Laszlo Ersek Reviewed-by: Laszlo Ersek Reviewed-by: Jeff Fan git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18642 6f19259b-4bc3-4df7-8a09-765794883524 --- UefiCpuPkg/Include/AcpiCpuData.h | 71 ++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 UefiCpuPkg/Include/AcpiCpuData.h diff --git a/UefiCpuPkg/Include/AcpiCpuData.h b/UefiCpuPkg/Include/AcpiCpuData.h new file mode 100644 index 0000000000..a36725711c --- /dev/null +++ b/UefiCpuPkg/Include/AcpiCpuData.h @@ -0,0 +1,71 @@ +/** @file +Definitions for CPU S3 data. + +Copyright (c) 2013 - 2015, Intel Corporation. All rights reserved.
+This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#ifndef _ACPI_CPU_DATA_H_ +#define _ACPI_CPU_DATA_H_ + +// +// Register types in register table +// +typedef enum _REGISTER_TYPE { + Msr, + ControlRegister, + MemoryMapped, + CacheControl +} REGISTER_TYPE; + +// +// Element of register table entry +// +typedef struct { + REGISTER_TYPE RegisterType; + UINT32 Index; + UINT8 ValidBitStart; + UINT8 ValidBitLength; + UINT64 Value; +} CPU_REGISTER_TABLE_ENTRY; + +// +// Register table definition, including current table length, +// allocated size of this table, and pointer to the list of table entries. +// +typedef struct { + UINT32 TableLength; + UINT32 NumberBeforeReset; + UINT32 AllocatedSize; + UINT32 InitialApicId; + CPU_REGISTER_TABLE_ENTRY *RegisterTableEntry; +} CPU_REGISTER_TABLE; + +typedef struct { + EFI_PHYSICAL_ADDRESS StartupVector; + EFI_PHYSICAL_ADDRESS GdtrProfile; + EFI_PHYSICAL_ADDRESS IdtrProfile; + EFI_PHYSICAL_ADDRESS StackAddress; + UINT32 StackSize; + UINT32 NumberOfCpus; + EFI_PHYSICAL_ADDRESS MtrrTable; + // + // Physical address of a CPU_REGISTER_TABLE structure + // + EFI_PHYSICAL_ADDRESS PreSmmInitRegisterTable; + // + // Physical address of a CPU_REGISTER_TABLE structure + // + EFI_PHYSICAL_ADDRESS RegisterTable; + EFI_PHYSICAL_ADDRESS ApMachineCheckHandlerBase; + UINT32 ApMachineCheckHandlerSize; +} ACPI_CPU_DATA; + +#endif