diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/ReportStatusCode.c b/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/ReportStatusCode.c index 4c071f2dbe..a8145cd28a 100644 --- a/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/ReportStatusCode.c +++ b/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/ReportStatusCode.c @@ -23,7 +23,9 @@ Abstract: #include EFI_GUID_DEFINITION (StatusCodeDataTypeId) #include EFI_ARCH_PROTOCOL_DEFINITION (StatusCode) +#if (EFI_SPECIFICATION_VERSION >= 0x00020000) STATIC EFI_STATUS_CODE_PROTOCOL *gStatusCode = NULL; +#endif EFI_STATUS EfiLibReportStatusCode ( @@ -56,37 +58,34 @@ Returns: --*/ { EFI_STATUS Status; - - Status = EFI_UNSUPPORTED; - if (gRT->Hdr.Revision >= 0x00020000) { - if (gStatusCode == NULL) { - if (gBS == NULL) { - return EFI_UNSUPPORTED; - } - Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode); - if (EFI_ERROR (Status) || gStatusCode == NULL) { - return EFI_UNSUPPORTED; - } - } - Status = gStatusCode->ReportStatusCode (Type, Value, Instance, CallerId, Data); - } else { - if (gRT == NULL) { - return EFI_UNSUPPORTED; - } - // - // Check whether EFI_RUNTIME_SERVICES has Tiano Extension - // - Status = EFI_UNSUPPORTED; -#if (EFI_SPECIFICATION_VERSION < 0x00020000) - if (gRT->Hdr.Revision == EFI_SPECIFICATION_VERSION && - gRT->Hdr.HeaderSize == sizeof (EFI_RUNTIME_SERVICES) && - gRT->ReportStatusCode != NULL) { - Status = gRT->ReportStatusCode (Type, Value, Instance, CallerId, Data); -#endif - } - } +#if (EFI_SPECIFICATION_VERSION >= 0x00020000) + if (gStatusCode == NULL) { + if (gBS == NULL) { + return EFI_UNSUPPORTED; + } + Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode); + if (EFI_ERROR (Status) || gStatusCode == NULL) { + return EFI_UNSUPPORTED; + } + } + Status = gStatusCode->ReportStatusCode (Type, Value, Instance, CallerId, Data); return Status; +#else + if (gRT == NULL) { + return EFI_UNSUPPORTED; + } + // + // Check whether EFI_RUNTIME_SERVICES has Tiano Extension + // + Status = EFI_UNSUPPORTED; + if (gRT->Hdr.Revision == EFI_SPECIFICATION_VERSION && + gRT->Hdr.HeaderSize == sizeof (EFI_RUNTIME_SERVICES) && + gRT->ReportStatusCode != NULL) { + Status = gRT->ReportStatusCode (Type, Value, Instance, CallerId, Data); + } + return Status; +#endif } EFI_STATUS diff --git a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/ia32/RuntimeLib.c b/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/ia32/RuntimeLib.c index 4fb049444c..2367e10759 100644 --- a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/ia32/RuntimeLib.c +++ b/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/ia32/RuntimeLib.c @@ -1,6 +1,6 @@ /*++ -Copyright (c) 2005 - 2008, Intel Corporation +Copyright (c) 2004 - 2008, 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 @@ -42,7 +42,9 @@ EFI_CPU_IO_PROTOCOL *gCpuIo; BOOLEAN mEfiAtRuntime = FALSE; FVB_ENTRY *mFvbEntry; +#if (EFI_SPECIFICATION_VERSION >= 0x00020000) static EFI_STATUS_CODE_PROTOCOL *gStatusCode = NULL; +#endif EFI_STATUS EfiConvertPointer ( @@ -211,10 +213,12 @@ Returns: // Update global for Runtime Services Table and IO // EfiConvertInternalPointer ((VOID **) &gCpuIo); +#if (EFI_SPECIFICATION_VERSION >= 0x00020000) if (gStatusCode != NULL) { EfiConvertInternalPointer ((VOID **) &gStatusCode->ReportStatusCode); EfiConvertInternalPointer ((VOID **) &gStatusCode); } +#endif EfiConvertInternalPointer ((VOID **) &mRT); // @@ -270,10 +274,12 @@ Returns: Status = EfiLibGetSystemConfigurationTable (&gEfiDxeServicesTableGuid, (VOID **) &gDS); ASSERT_EFI_ERROR (Status); +#if (EFI_SPECIFICATION_VERSION >= 0x00020000) Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode); if (EFI_ERROR (Status)) { gStatusCode = NULL; } +#endif Status = gBS->LocateProtocol (&gEfiCpuIoProtocolGuid, NULL, (VOID **) &gCpuIo); if (EFI_ERROR (Status)) { @@ -399,10 +405,12 @@ Returns: mRT = SystemTable->RuntimeServices; ASSERT (mRT != NULL); +#if (EFI_SPECIFICATION_VERSION >= 0x00020000) Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode); if (EFI_ERROR (Status)) { gStatusCode = NULL; } +#endif Status = gBS->LocateProtocol (&gEfiCpuIoProtocolGuid, NULL, (VOID **) &gCpuIo); if (EFI_ERROR (Status)) { @@ -656,6 +664,7 @@ Returns: return mRT->SetVariable (VariableName, VendorGuid, Attributes, DataSize, Data); } + #if (EFI_SPECIFICATION_VERSION >= 0x00020000) EFI_STATUS @@ -694,7 +703,6 @@ Returns: #endif - EFI_STATUS EfiGetNextHighMonotonicCount ( OUT UINT32 *HighCount @@ -781,35 +789,31 @@ Returns: --*/ { EFI_STATUS Status; - - Status = EFI_UNSUPPORTED; - if (mRT->Hdr.Revision >= 0x00020000) { - if (gStatusCode == NULL) { - if (EfiAtRuntime ()) { - return EFI_UNSUPPORTED; - } - Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode); - if (EFI_ERROR (Status) || gStatusCode == NULL) { - return EFI_UNSUPPORTED; - } - } - Status = gStatusCode->ReportStatusCode (CodeType, Value, Instance, CallerId, Data); - } else { - if (mRT == NULL) { - return EFI_UNSUPPORTED; - } - // - // Check whether EFI_RUNTIME_SERVICES has Tiano Extension - // - Status = EFI_UNSUPPORTED; -#if (EFI_SPECIFICATION_VERSION < 0x00020000) - if (mRT->Hdr.Revision == EFI_SPECIFICATION_VERSION && - mRT->Hdr.HeaderSize == sizeof (EFI_RUNTIME_SERVICES) && - mRT->ReportStatusCode != NULL) { +#if (EFI_SPECIFICATION_VERSION >= 0x00020000) + if (gStatusCode == NULL) { + if (EfiAtRuntime ()) { + return EFI_UNSUPPORTED; + } + Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode); + if (EFI_ERROR (Status) || gStatusCode == NULL) { + return EFI_UNSUPPORTED; + } + } + Status = gStatusCode->ReportStatusCode (CodeType, Value, Instance, CallerId, Data); +#else + if (mRT == NULL) { + return EFI_UNSUPPORTED; + } + // + // Check whether EFI_RUNTIME_SERVICES has Tiano Extension + // + Status = EFI_UNSUPPORTED; + if (mRT->Hdr.Revision == EFI_SPECIFICATION_VERSION && + mRT->Hdr.HeaderSize == sizeof (EFI_RUNTIME_SERVICES) && + mRT->ReportStatusCode != NULL) { Status = mRT->ReportStatusCode (CodeType, Value, Instance, CallerId, Data); + } #endif - } - } return Status; } diff --git a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/x64/RuntimeLib.c b/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/x64/RuntimeLib.c index 4fb049444c..ad653507cb 100644 --- a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/x64/RuntimeLib.c +++ b/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/x64/RuntimeLib.c @@ -42,7 +42,9 @@ EFI_CPU_IO_PROTOCOL *gCpuIo; BOOLEAN mEfiAtRuntime = FALSE; FVB_ENTRY *mFvbEntry; +#if (EFI_SPECIFICATION_VERSION >= 0x00020000) static EFI_STATUS_CODE_PROTOCOL *gStatusCode = NULL; +#endif EFI_STATUS EfiConvertPointer ( @@ -211,10 +213,12 @@ Returns: // Update global for Runtime Services Table and IO // EfiConvertInternalPointer ((VOID **) &gCpuIo); +#if (EFI_SPECIFICATION_VERSION >= 0x00020000) if (gStatusCode != NULL) { EfiConvertInternalPointer ((VOID **) &gStatusCode->ReportStatusCode); EfiConvertInternalPointer ((VOID **) &gStatusCode); } +#endif EfiConvertInternalPointer ((VOID **) &mRT); // @@ -270,10 +274,12 @@ Returns: Status = EfiLibGetSystemConfigurationTable (&gEfiDxeServicesTableGuid, (VOID **) &gDS); ASSERT_EFI_ERROR (Status); +#if (EFI_SPECIFICATION_VERSION >= 0x00020000) Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode); if (EFI_ERROR (Status)) { gStatusCode = NULL; } +#endif Status = gBS->LocateProtocol (&gEfiCpuIoProtocolGuid, NULL, (VOID **) &gCpuIo); if (EFI_ERROR (Status)) { @@ -399,10 +405,12 @@ Returns: mRT = SystemTable->RuntimeServices; ASSERT (mRT != NULL); +#if (EFI_SPECIFICATION_VERSION >= 0x00020000) Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode); if (EFI_ERROR (Status)) { gStatusCode = NULL; } +#endif Status = gBS->LocateProtocol (&gEfiCpuIoProtocolGuid, NULL, (VOID **) &gCpuIo); if (EFI_ERROR (Status)) { @@ -781,35 +789,31 @@ Returns: --*/ { EFI_STATUS Status; - - Status = EFI_UNSUPPORTED; - if (mRT->Hdr.Revision >= 0x00020000) { - if (gStatusCode == NULL) { - if (EfiAtRuntime ()) { - return EFI_UNSUPPORTED; - } - Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode); - if (EFI_ERROR (Status) || gStatusCode == NULL) { - return EFI_UNSUPPORTED; - } - } - Status = gStatusCode->ReportStatusCode (CodeType, Value, Instance, CallerId, Data); - } else { - if (mRT == NULL) { - return EFI_UNSUPPORTED; - } - // - // Check whether EFI_RUNTIME_SERVICES has Tiano Extension - // - Status = EFI_UNSUPPORTED; -#if (EFI_SPECIFICATION_VERSION < 0x00020000) - if (mRT->Hdr.Revision == EFI_SPECIFICATION_VERSION && - mRT->Hdr.HeaderSize == sizeof (EFI_RUNTIME_SERVICES) && - mRT->ReportStatusCode != NULL) { +#if (EFI_SPECIFICATION_VERSION >= 0x00020000) + if (gStatusCode == NULL) { + if (EfiAtRuntime ()) { + return EFI_UNSUPPORTED; + } + Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode); + if (EFI_ERROR (Status) || gStatusCode == NULL) { + return EFI_UNSUPPORTED; + } + } + Status = gStatusCode->ReportStatusCode (CodeType, Value, Instance, CallerId, Data); +#else + if (mRT == NULL) { + return EFI_UNSUPPORTED; + } + // + // Check whether EFI_RUNTIME_SERVICES has Tiano Extension + // + Status = EFI_UNSUPPORTED; + if (mRT->Hdr.Revision == EFI_SPECIFICATION_VERSION && + mRT->Hdr.HeaderSize == sizeof (EFI_RUNTIME_SERVICES) && + mRT->ReportStatusCode != NULL) { Status = mRT->ReportStatusCode (CodeType, Value, Instance, CallerId, Data); + } #endif - } - } return Status; }