From a7932d9a1aca93f8c82aa6c513c96c2a23ba17a1 Mon Sep 17 00:00:00 2001 From: mdkinney Date: Wed, 27 Jan 2010 23:11:00 +0000 Subject: [PATCH] Clean up module to use SMM CPU Save State Protocol definitions from IntelFrameworkPkg instead of duplicating definitions in this module. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9843 6f19259b-4bc3-4df7-8a09-765794883524 --- .../SmmBaseHelper/CpuSaveState.h | 143 ------------------ .../SmmBaseHelper/SmmBaseHelper.c | 42 ++++- .../SmmBaseHelper/SmmBaseHelper.h | 57 ------- .../SmmBaseHelper/SmmBaseHelper.inf | 8 +- 4 files changed, 43 insertions(+), 207 deletions(-) delete mode 100644 EdkCompatibilityPkg/Compatibility/SmmBaseHelper/CpuSaveState.h delete mode 100644 EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.h diff --git a/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/CpuSaveState.h b/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/CpuSaveState.h deleted file mode 100644 index 17352bcf39..0000000000 --- a/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/CpuSaveState.h +++ /dev/null @@ -1,143 +0,0 @@ -/** @file - Definitions for SMM CPU Save State per Framework SMM CIS 0.91 spec. - - Copyright (c) 2009, 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 _CPU_SAVE_STATE_H_ -#define _CPU_SAVE_STATE_H_ - -typedef unsigned char ASM_UINT8; -typedef ASM_UINT8 ASM_BOOL; -typedef unsigned short ASM_UINT16; -typedef unsigned long ASM_UINT32; - -typedef UINT64 ASM_UINT64; - -#ifndef __GNUC__ -#pragma pack (push) -#pragma pack (1) -#endif - -typedef struct _EFI_SMM_CPU_STATE32 { - ASM_UINT8 Reserved1[0xf8]; // fe00h - ASM_UINT32 SMBASE; // fef8h - ASM_UINT32 SMMRevId; // fefch - ASM_UINT16 IORestart; // ff00h - ASM_UINT16 AutoHALTRestart; // ff02h - ASM_UINT32 IEDBASE; // ff04h - ASM_UINT8 Reserved2[0x98]; // ff08h - ASM_UINT32 IOMemAddr; // ffa0h - ASM_UINT32 IOMisc; // ffa4h - ASM_UINT32 _ES; - ASM_UINT32 _CS; - ASM_UINT32 _SS; - ASM_UINT32 _DS; - ASM_UINT32 _FS; - ASM_UINT32 _GS; - ASM_UINT32 _LDTBase; - ASM_UINT32 _TR; - ASM_UINT32 _DR7; - ASM_UINT32 _DR6; - ASM_UINT32 _EAX; - ASM_UINT32 _ECX; - ASM_UINT32 _EDX; - ASM_UINT32 _EBX; - ASM_UINT32 _ESP; - ASM_UINT32 _EBP; - ASM_UINT32 _ESI; - ASM_UINT32 _EDI; - ASM_UINT32 _EIP; - ASM_UINT32 _EFLAGS; - ASM_UINT32 _CR3; - ASM_UINT32 _CR0; -} EFI_SMM_CPU_STATE32; - -typedef struct _EFI_SMM_CPU_STATE64 { - ASM_UINT8 Reserved1[0x1d0]; // fc00h - ASM_UINT32 GdtBaseHiDword; // fdd0h - ASM_UINT32 LdtBaseHiDword; // fdd4h - ASM_UINT32 IdtBaseHiDword; // fdd8h - ASM_UINT8 Reserved2[0xc]; // fddch - ASM_UINT64 IO_EIP; // fde8h - ASM_UINT8 Reserved3[0x50]; // fdf0h - ASM_UINT32 _CR4; // fe40h - ASM_UINT8 Reserved4[0x48]; // fe44h - ASM_UINT32 GdtBaseLoDword; // fe8ch - ASM_UINT32 GdtLimit; // fe90h - ASM_UINT32 IdtBaseLoDword; // fe94h - ASM_UINT32 IdtLimit; // fe98h - ASM_UINT32 LdtBaseLoDword; // fe9ch - ASM_UINT32 LdtLimit; // fea0h - ASM_UINT32 LdtInfo; // fea4h - ASM_UINT8 Reserved5[0x50]; // fea8h - ASM_UINT32 SMBASE; // fef8h - ASM_UINT32 SMMRevId; // fefch - ASM_UINT16 AutoHALTRestart; // ff00h - ASM_UINT16 IORestart; // ff02h - ASM_UINT32 IEDBASE; // ff04h - ASM_UINT8 Reserved6[0x14]; // ff08h - ASM_UINT64 _R15; // ff1ch - ASM_UINT64 _R14; - ASM_UINT64 _R13; - ASM_UINT64 _R12; - ASM_UINT64 _R11; - ASM_UINT64 _R10; - ASM_UINT64 _R9; - ASM_UINT64 _R8; - ASM_UINT64 _RAX; // ff5ch - ASM_UINT64 _RCX; - ASM_UINT64 _RDX; - ASM_UINT64 _RBX; - ASM_UINT64 _RSP; - ASM_UINT64 _RBP; - ASM_UINT64 _RSI; - ASM_UINT64 _RDI; - ASM_UINT64 IOMemAddr; // ff9ch - ASM_UINT32 IOMisc; // ffa4h - ASM_UINT32 _ES; // ffa8h - ASM_UINT32 _CS; - ASM_UINT32 _SS; - ASM_UINT32 _DS; - ASM_UINT32 _FS; - ASM_UINT32 _GS; - ASM_UINT32 _LDTR; // ffc0h - ASM_UINT32 _TR; - ASM_UINT64 _DR7; // ffc8h - ASM_UINT64 _DR6; - ASM_UINT64 _RIP; // ffd8h - ASM_UINT64 IA32_EFER; // ffe0h - ASM_UINT64 _RFLAGS; // ffe8h - ASM_UINT64 _CR3; // fff0h - ASM_UINT64 _CR0; // fff8h -} EFI_SMM_CPU_STATE64; - -#ifndef __GNUC__ -#pragma warning (push) -#pragma warning (disable: 4201) -#endif - -typedef union _EFI_SMM_CPU_STATE { - struct { - ASM_UINT8 Reserved[0x200]; - EFI_SMM_CPU_STATE32 x86; - }; - EFI_SMM_CPU_STATE64 x64; -} EFI_SMM_CPU_STATE; - -#ifndef __GNUC__ -#pragma warning (pop) -#pragma pack (pop) -#endif - -#define EFI_SMM_MIN_REV_ID_x64 0x30006 - -#endif diff --git a/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.c b/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.c index d03fcd3be4..347e83d01f 100644 --- a/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.c +++ b/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.c @@ -4,7 +4,7 @@ This driver is the counterpart of the SMM Base On SMM Base2 Thunk driver. It provides helping services in SMM to the SMM Base On SMM Base2 Thunk driver. - Copyright (c) 2009, Intel Corporation + Copyright (c) 2009 - 2010, 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 @@ -15,7 +15,45 @@ **/ -#include "SmmBaseHelper.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/// +/// Structure for tracking paired information of registered Framework SMI handler +/// and correpsonding dispatch handle for SMI handler thunk. +/// +typedef struct { + LIST_ENTRY Link; + EFI_HANDLE DispatchHandle; + EFI_HANDLE SmmImageHandle; + EFI_SMM_CALLBACK_ENTRY_POINT CallbackAddress; +} CALLBACK_INFO; + +typedef struct { + /// + /// PI SMM CPU Save State register index + /// + EFI_SMM_SAVE_STATE_REGISTER Register; + /// + /// Offset in Framework SMST + /// + UINTN Offset; +} CPU_SAVE_STATE_CONVERSION; + +#define CPU_SAVE_STATE_GET_OFFSET(Field) (UINTN)(&(((EFI_SMM_CPU_SAVE_STATE *) 0)->Ia32SaveState.Field)) + EFI_HANDLE mDispatchHandle; EFI_SMM_CPU_PROTOCOL *mSmmCpu; diff --git a/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.h b/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.h deleted file mode 100644 index 5bc218703e..0000000000 --- a/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.h +++ /dev/null @@ -1,57 +0,0 @@ -/** @file - Include file for SMM Base Helper SMM driver. - - Copyright (c) 2009, 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 _SMM_BASE_HELPER_H_ -#define _SMM_BASE_HELPER_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "CpuSaveState.h" - -/// -/// Structure for tracking paired information of registered Framework SMI handler -/// and correpsonding dispatch handle for SMI handler thunk. -/// -typedef struct { - LIST_ENTRY Link; - EFI_HANDLE DispatchHandle; - EFI_HANDLE SmmImageHandle; - EFI_SMM_CALLBACK_ENTRY_POINT CallbackAddress; -} CALLBACK_INFO; - -typedef struct { - /// - /// PI SMM CPU Save State register index - /// - EFI_SMM_SAVE_STATE_REGISTER Register; - /// - /// Offset in Framework SMST - /// - UINTN Offset; -} CPU_SAVE_STATE_CONVERSION; - -#define CPU_SAVE_STATE_GET_OFFSET(Field) (UINTN)(&(((EFI_SMM_CPU_SAVE_STATE *) 0)->Ia32SaveState.Field)) - -#endif diff --git a/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.inf b/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.inf index 3a54544e20..cd425adfa0 100644 --- a/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.inf +++ b/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/SmmBaseHelper.inf @@ -1,7 +1,7 @@ ## @file # Component description file for SMM Base Helper SMM driver. # -# Copyright (c) 2009, Intel Corporation. +# Copyright (c) 2009 - 2010, 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 @@ -20,7 +20,6 @@ MODULE_TYPE = DXE_SMM_DRIVER VERSION_STRING = 1.0 PI_SPECIFICATION_VERSION = 0x0001000A - ENTRY_POINT = SmmBaseHelperMain # @@ -31,7 +30,6 @@ [Sources] SmmBaseHelper.c - SmmBaseHelper.h [Packages] MdePkg/MdePkg.dec @@ -55,7 +53,7 @@ gEfiSmmCpuProtocolGuid # PROTOCOL ALWAYS_CONSUMED gEfiLoadedImageProtocolGuid # PROTOCOL ALWAYS_CONSUMED gEfiLoadedImageDevicePathProtocolGuid # PROTOCOL ALWAYS_CONSUMED - + gEfiSmmCpuSaveStateProtocolGuid # PROTOCOL ALWAYS_CONSUMED + [Depex] gEfiSmmCpuProtocolGuid - -- 2.39.2