From 9507640c625d31b4ce3e5b45d8db58151b781dcb Mon Sep 17 00:00:00 2001 From: Heyi Guo Date: Wed, 27 May 2015 15:11:19 +0000 Subject: EmbeddedPkg: Fix Ebl dumpgcd bug with memory type and IO type 1. Data type for GcdMemoryType and GcdIoType is enumeration type rather than bit field, so we need to use strict equation "==" instead of bit-and "&"; 2. Testing for GcdIoType should use EfiGcdIoType*** constants rather than EfiGcdMemoryType***; 3. As we are going to use strict equation, it is clearer to use switch-case than if-else. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Heyi Guo Reviewed-by: Olivier Martin git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17527 6f19259b-4bc3-4df7-8a09-765794883524 --- ArmPlatformPkg/Library/EblCmdLib/EblCmdLib.c | 31 +++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) (limited to 'ArmPlatformPkg') diff --git a/ArmPlatformPkg/Library/EblCmdLib/EblCmdLib.c b/ArmPlatformPkg/Library/EblCmdLib/EblCmdLib.c index 899991062f..4a5f2be394 100644 --- a/ArmPlatformPkg/Library/EblCmdLib/EblCmdLib.c +++ b/ArmPlatformPkg/Library/EblCmdLib/EblCmdLib.c @@ -325,14 +325,23 @@ EblDumpGcd ( if (MemorySpaceMap[i].Attributes & EFI_MEMORY_XP) AsciiPrint (" MEM_XP"); - if (MemorySpaceMap[i].GcdMemoryType & EfiGcdMemoryTypeNonExistent) + switch (MemorySpaceMap[i].GcdMemoryType) { + case EfiGcdMemoryTypeNonExistent: AsciiPrint (" TYPE_NONEXISTENT"); - if (MemorySpaceMap[i].GcdMemoryType & EfiGcdMemoryTypeReserved) + break; + case EfiGcdMemoryTypeReserved: AsciiPrint (" TYPE_RESERVED"); - if (MemorySpaceMap[i].GcdMemoryType & EfiGcdMemoryTypeSystemMemory) + break; + case EfiGcdMemoryTypeSystemMemory: AsciiPrint (" TYPE_SYSMEM"); - if (MemorySpaceMap[i].GcdMemoryType & EfiGcdMemoryTypeMemoryMappedIo) + break; + case EfiGcdMemoryTypeMemoryMappedIo: AsciiPrint (" TYPE_MEMMAP"); + break; + default: + AsciiPrint (" TYPE_UNKNOWN"); + break; + } AsciiPrint ("\n"); } @@ -347,12 +356,20 @@ EblDumpGcd ( AsciiPrint ("IO %08lx - %08lx",IoSpaceMap[i].BaseAddress,IoSpaceMap[i].BaseAddress+IoSpaceMap[i].Length); AsciiPrint ("\t%08x %08x",IoSpaceMap[i].ImageHandle,IoSpaceMap[i].DeviceHandle); - if (IoSpaceMap[i].GcdIoType & EfiGcdMemoryTypeNonExistent) + switch (IoSpaceMap[i].GcdIoType) { + case EfiGcdIoTypeNonExistent: AsciiPrint (" TYPE_NONEXISTENT"); - if (IoSpaceMap[i].GcdIoType & EfiGcdMemoryTypeReserved) + break; + case EfiGcdIoTypeReserved: AsciiPrint (" TYPE_RESERVED"); - if (IoSpaceMap[i].GcdIoType & EfiGcdIoTypeIo) + break; + case EfiGcdIoTypeIo: AsciiPrint (" TYPE_IO"); + break; + default: + AsciiPrint (" TYPE_UNKNOWN"); + break; + } AsciiPrint ("\n"); } -- cgit v1.2.3