summaryrefslogtreecommitdiff
path: root/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/x64/RuntimeLib.c
diff options
context:
space:
mode:
Diffstat (limited to 'EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/x64/RuntimeLib.c')
-rw-r--r--EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/x64/RuntimeLib.c58
1 files changed, 27 insertions, 31 deletions
diff --git a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/x64/RuntimeLib.c b/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/x64/RuntimeLib.c
index ad65350..4fb0494 100644
--- a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/x64/RuntimeLib.c
+++ b/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/x64/RuntimeLib.c
@@ -42,9 +42,7 @@ 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 (
@@ -213,12 +211,10 @@ 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);
//
@@ -274,12 +270,10 @@ 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)) {
@@ -405,12 +399,10 @@ 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)) {
@@ -789,31 +781,35 @@ Returns:
--*/
{
EFI_STATUS Status;
-
-#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) {
+
+ 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) {
Status = mRT->ReportStatusCode (CodeType, Value, Instance, CallerId, Data);
- }
#endif
+ }
+ }
return Status;
}