]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPkg/Library/ArmLib/Arm/ArmLibSupport.S
ArmPkg/ArmLib: add support for reading the max physical address space size
[mirror_edk2.git] / ArmPkg / Library / ArmLib / Arm / ArmLibSupport.S
index 149b57e059eeabe46929613b732e74bc4a470a8d..0e9f9d0453e43cd79bd39bec9d767784b767cf16 100644 (file)
@@ -100,8 +100,6 @@ ASM_FUNC(ArmGetTTBR0BaseAddress)
 //  IN VOID  *MVA                    // R1\r
 //  );\r
 ASM_FUNC(ArmUpdateTranslationTableEntry)\r
-  mcr     p15,0,R0,c7,c14,1     @ DCCIMVAC Clean data cache by MVA\r
-  dsb\r
   mcr     p15,0,R1,c8,c7,1      @ TLBIMVA TLB Invalidate MVA\r
   mcr     p15,0,R9,c7,c5,6      @ BPIALL Invalidate Branch predictor array. R9 == NoOp\r
   dsb\r
@@ -167,4 +165,12 @@ ASM_FUNC(ArmWriteCpuActlr)
   isb\r
   bx      lr\r
 \r
+ASM_FUNC (ArmGetPhysicalAddressBits)\r
+  mrc     p15, 0, r0, c0, c1, 4   // MMFR0\r
+  and     r0, r0, #0xf            // VMSA [3:0]\r
+  cmp     r0, #5                  // >= 5 implies LPAE support\r
+  movlt   r0, #32                 // 32 bits if no LPAE\r
+  movge   r0, #40                 // 40 bits if LPAE\r
+  bx      lr\r
+\r
 ASM_FUNCTION_REMOVE_IF_UNREFERENCED\r