]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPkg/Library/ArmLib/ArmV7/ArmV7Lib.c
ArmPkg/ArmV7Lib: Add support for Invalid Instruction Cache to Point of Unification
[mirror_edk2.git] / ArmPkg / Library / ArmLib / ArmV7 / ArmV7Lib.c
index 1ffdb7f83f1a59c60e911672b290c50f3bc4dc0a..d9cf8826ceb1cee651f719c7d89889a5c9bc54ec 100644 (file)
@@ -196,9 +196,8 @@ ArmV7DataCacheOperation (
   UINTN     SavedInterruptState;
 
   SavedInterruptState = ArmGetInterruptState ();
-  ArmDisableInterrupts();
+  ArmDisableInterrupts ();
   
-
   ArmV7AllDataCachesOperation (DataCacheOperation);
   
   ArmDrainWriteBuffer ();
@@ -208,6 +207,26 @@ ArmV7DataCacheOperation (
   }
 }
 
+
+VOID
+ArmV7PoUDataCacheOperation (
+  IN  ARM_V7_CACHE_OPERATION  DataCacheOperation
+  )
+{
+  UINTN     SavedInterruptState;
+
+  SavedInterruptState = ArmGetInterruptState ();
+  ArmDisableInterrupts ();
+  
+  ArmV7PerformPoUDataCacheOperation (DataCacheOperation);
+  
+  ArmDrainWriteBuffer ();
+  
+  if (SavedInterruptState) {
+    ArmEnableInterrupts ();
+  }
+}
+
 VOID
 EFIAPI
 ArmInvalidateDataCache (
@@ -235,3 +254,11 @@ ArmCleanDataCache (
   ArmV7DataCacheOperation (ArmCleanDataCacheEntryBySetWay);
 }
 
+VOID
+EFIAPI
+ArmCleanDataCacheToPoU (
+  VOID
+  )
+{
+  ArmV7PoUDataCacheOperation (ArmCleanDataCacheEntryBySetWay);
+}