]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ArmPkg/CpuDxe/AArch64: Fixed SyncCacheConfig() when first entry is in 3-level
authorOlivier Martin <olivier.martin@arm.com>
Wed, 14 May 2014 05:32:07 +0000 (05:32 +0000)
committeroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 14 May 2014 05:32:07 +0000 (05:32 +0000)
If the first entry of the memory map is in the third level (case when the region
at 0x0 is smaller than 4KB) then its descriptor type would be TT_TYPE_BLOCK_ENTRY_LEVEL3
(=0x3) which has the same value as TT_TYPE_TABLE_ENTRY (=0x3).
The first condition in GetFirstPageAttribute() needed the table level
to not mix these two descriptor types.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15526 6f19259b-4bc3-4df7-8a09-765794883524

ArmPkg/Drivers/CpuDxe/AArch64/Mmu.c

index 95bf10bcb2b0502b8c83266d3a9fc64f1552dbad..6cba1218c61c532e7f18a7437b32fe2ec80f4a51 100644 (file)
@@ -32,9 +32,8 @@ GetFirstPageAttribute (
   // Get the first entry of the table\r
   FirstEntry = *FirstLevelTableAddress;\r
 \r
-  if ((FirstEntry & TT_TYPE_MASK) == TT_TYPE_TABLE_ENTRY) {\r
+  if ((TableLevel != 3) && (FirstEntry & TT_TYPE_MASK) == TT_TYPE_TABLE_ENTRY) {\r
     // Only valid for Levels 0, 1 and 2\r
-    ASSERT (TableLevel < 3);\r
 \r
     // Get the attribute of the subsequent table\r
     return GetFirstPageAttribute ((UINT64*)(FirstEntry & TT_ADDRESS_MASK_DESCRIPTION_TABLE), TableLevel + 1);\r