mirror of https://github.com/acidanthera/audk.git
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:
parent
829ea9b2dd
commit
9507640c62
|
@ -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");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue