**/\r
#include <Base.h>\r
#include <Library/ArmLib.h>\r
+#include <Library/DebugLib.h>\r
#include <Library/PcdLib.h>\r
\r
VOID\r
CacheRangeOperation (\r
IN VOID *Start,\r
IN UINTN Length,\r
- IN CACHE_OPERATION CacheOperation,\r
IN LINE_OPERATION LineOperation\r
)\r
{\r
UINTN ArmCacheLineLength = ArmDataCacheLineLength();\r
UINTN ArmCacheLineAlignmentMask = ArmCacheLineLength - 1;\r
- UINTN ArmCacheOperationThreshold = PcdGet32(PcdArmCacheOperationThreshold);\r
\r
- if ((CacheOperation != NULL) && (Length >= ArmCacheOperationThreshold)) {\r
- ArmDrainWriteBuffer ();\r
- CacheOperation ();\r
- } else {\r
- // Align address (rounding down)\r
- UINTN AlignedAddress = (UINTN)Start - ((UINTN)Start & ArmCacheLineAlignmentMask);\r
- UINTN EndAddress = (UINTN)Start + Length;\r
+ // Align address (rounding down)\r
+ UINTN AlignedAddress = (UINTN)Start - ((UINTN)Start & ArmCacheLineAlignmentMask);\r
+ UINTN EndAddress = (UINTN)Start + Length;\r
\r
- // Perform the line operation on an address in each cache line\r
- while (AlignedAddress < EndAddress) {\r
- LineOperation(AlignedAddress);\r
- AlignedAddress += ArmCacheLineLength;\r
- }\r
+ // Perform the line operation on an address in each cache line\r
+ while (AlignedAddress < EndAddress) {\r
+ LineOperation(AlignedAddress);\r
+ AlignedAddress += ArmCacheLineLength;\r
}\r
+ ArmDataSynchronizationBarrier ();\r
}\r
\r
VOID\r
VOID\r
)\r
{\r
- ArmCleanDataCache();\r
- ArmInvalidateInstructionCache();\r
+ ASSERT (FALSE);\r
}\r
\r
VOID\r
VOID\r
)\r
{\r
- ArmInvalidateDataCache();\r
+ ASSERT (FALSE);\r
}\r
\r
VOID *\r
IN UINTN Length\r
)\r
{\r
- CacheRangeOperation (Address, Length, ArmCleanDataCacheToPoU, ArmCleanDataCacheEntryByMVA);\r
+ CacheRangeOperation (Address, Length, ArmCleanDataCacheEntryToPoUByMVA);\r
ArmInvalidateInstructionCache ();\r
return Address;\r
}\r
VOID\r
)\r
{\r
- ArmCleanInvalidateDataCache();\r
+ ASSERT (FALSE);\r
}\r
\r
VOID *\r
IN UINTN Length\r
)\r
{\r
- CacheRangeOperation(Address, Length, ArmCleanInvalidateDataCache, ArmCleanInvalidateDataCacheEntryByMVA);\r
+ CacheRangeOperation(Address, Length, ArmCleanInvalidateDataCacheEntryByMVA);\r
return Address;\r
}\r
\r
VOID\r
)\r
{\r
- ArmCleanDataCache();\r
+ ASSERT (FALSE);\r
}\r
\r
VOID *\r
IN UINTN Length\r
)\r
{\r
- CacheRangeOperation(Address, Length, ArmCleanDataCache, ArmCleanDataCacheEntryByMVA);\r
+ CacheRangeOperation(Address, Length, ArmCleanDataCacheEntryByMVA);\r
return Address;\r
}\r
\r
IN UINTN Length\r
)\r
{\r
- CacheRangeOperation(Address, Length, NULL, ArmInvalidateDataCacheEntryByMVA);\r
+ CacheRangeOperation(Address, Length, ArmInvalidateDataCacheEntryByMVA);\r
return Address;\r
}\r