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 <heyi.guo@linaro.org>
Reviewed-by: Olivier Martin <Olivier.Martin@arm.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17527 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Heyi Guo 2015-05-27 15:11:19 +00:00 committed by oliviermartin
parent 829ea9b2dd
commit 9507640c62
1 changed files with 24 additions and 7 deletions

View File

@ -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");
}