1 /*++ 2 3 Copyright (c) 2004, Intel Corporation. All rights reserved.<BR> 4 This program and the accompanying materials 5 are licensed and made available under the terms and conditions of the BSD License 6 which accompanies this distribution. The full text of the license may be found at 7 http://opensource.org/licenses/bsd-license.php 8 9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 11 12 Module Name: 13 14 SecPlatformInformation.h 15 16 Abstract: 17 18 Sec Platform Information PPI as defined in Tiano 19 20 --*/ 21 22 #ifndef _PEI_SEC_PLATFORM_INFORMATION_PPI_H 23 #define _PEI_SEC_PLATFORM_INFORMATION_PPI_H 24 25 #define EFI_SEC_PLATFORM_INFORMATION_GUID \ 26 { \ 27 0x6f8c2b35, 0xfef4, 0x448d, {0x82, 0x56, 0xe1, 0x1b, 0x19, 0xd6, 0x10, 0x77} \ 28 } 29 30 EFI_FORWARD_DECLARATION (EFI_SEC_PLATFORM_INFORMATION_PPI); 31 32 extern EFI_GUID gEfiSecPlatformInformationPpiGuid; 33 34 typedef union { 35 struct { 36 UINT32 Status : 2; 37 UINT32 Tested : 1; 38 UINT32 Reserved1 :13; 39 UINT32 VirtualMemoryUnavailable : 1; 40 UINT32 Ia32ExecutionUnavailable : 1; 41 UINT32 FloatingPointUnavailable : 1; 42 UINT32 MiscFeaturesUnavailable : 1; 43 UINT32 Reserved2 :12; 44 } Bits; 45 UINT32 Uint32; 46 } EFI_HEALTH_FLAGS; 47 48 typedef struct { 49 EFI_HEALTH_FLAGS HealthFlags; 50 } SEC_PLATFORM_INFORMATION_RECORD; 51 52 typedef struct { 53 UINTN BootPhase; // entry r20 value 54 UINTN UniqueId; // PAL arbitration ID 55 UINTN HealthStat; // Health Status 56 UINTN PALRetAddress; // return address to PAL 57 } IPF_HANDOFF_STATUS; 58 59 typedef 60 EFI_STATUS 61 (EFIAPI *SEC_PLATFORM_INFORMATION) ( 62 IN EFI_PEI_SERVICES **PeiServices, 63 IN OUT UINT64 *StructureSize, 64 IN OUT SEC_PLATFORM_INFORMATION_RECORD *PlatformInformationRecord 65 ); 66 67 struct _EFI_SEC_PLATFORM_INFORMATION_PPI { 68 SEC_PLATFORM_INFORMATION PlatformInformation; 69 }; 70 71 #endif 72