VOID\r
ReplaceLiveEntry (\r
IN UINT64 *Entry,\r
- IN UINT64 Value\r
+ IN UINT64 Value,\r
+ IN UINT64 RegionStart\r
)\r
{\r
if (!ArmMmuEnabled ()) {\r
*Entry = Value;\r
} else {\r
- ArmReplaceLiveTranslationEntry (Entry, Value);\r
+ ArmReplaceLiveTranslationEntry (Entry, Value, RegionStart);\r
}\r
}\r
\r
\r
// Fill the BlockEntry with the new TranslationTable\r
ReplaceLiveEntry (BlockEntry,\r
- ((UINTN)TranslationTable & TT_ADDRESS_MASK_DESCRIPTION_TABLE) | TableAttributes | TT_TYPE_TABLE_ENTRY);\r
+ (UINTN)TranslationTable | TableAttributes | TT_TYPE_TABLE_ENTRY,\r
+ RegionStart);\r
}\r
} else {\r
if (IndexLevel != PageLevel) {\r
*BlockEntry &= BlockEntryMask;\r
*BlockEntry |= (RegionStart & TT_ADDRESS_MASK_BLOCK_ENTRY) | Attributes | Type;\r
\r
+ ArmUpdateTranslationTableEntry (BlockEntry, (VOID *)RegionStart);\r
+\r
// Go to the next BlockEntry\r
RegionStart += BlockEntrySize;\r
RegionLength -= BlockEntrySize;\r
return Status;\r
}\r
\r
- // Invalidate all TLB entries so changes are synced\r
- ArmInvalidateTlb ();\r
-\r
return EFI_SUCCESS;\r
}\r
\r
return Status;\r
}\r
\r
- // Invalidate all TLB entries so changes are synced\r
- ArmInvalidateTlb ();\r
-\r
return EFI_SUCCESS;\r
}\r
\r