ArmVirtPkg/XenVirtMemInfoLib: refactor reading of the PA space size
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Fri, 23 Nov 2018 12:14:29 +0000 (13:14 +0100)
committerArd Biesheuvel <ard.biesheuvel@linaro.org>
Thu, 29 Nov 2018 17:54:36 +0000 (18:54 +0100)
Use the new ArmLib helper to read the CPU's physical address limit
so we can drop our own homecooked one.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
ArmVirtPkg/Library/XenVirtMemInfoLib/AArch64/PhysAddrTop.S [deleted file]
ArmVirtPkg/Library/XenVirtMemInfoLib/Arm/PhysAddrTop.S [deleted file]
ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.c
ArmVirtPkg/Library/XenVirtMemInfoLib/XenVirtMemInfoLib.inf

diff --git a/ArmVirtPkg/Library/XenVirtMemInfoLib/AArch64/PhysAddrTop.S b/ArmVirtPkg/Library/XenVirtMemInfoLib/AArch64/PhysAddrTop.S
deleted file mode 100644 (file)
index a1f6a19..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#\r
-#  Copyright (c) 2011-2013, ARM Limited. All rights reserved.\r
-#  Copyright (c) 2016-2017, Linaro Limited. All rights reserved.\r
-#\r
-#  This program and the accompanying materials\r
-#  are licensed and made available under the terms and conditions of the BSD License\r
-#  which accompanies this distribution.  The full text of the license may be found at\r
-#  http://opensource.org/licenses/bsd-license.php\r
-#\r
-#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
-#\r
-\r
-#include <AsmMacroIoLibV8.h>\r
-\r
-//EFI_PHYSICAL_ADDRESS\r
-//GetPhysAddrTop (\r
-//  VOID\r
-//  );\r
-ASM_FUNC(ArmGetPhysAddrTop)\r
-  mrs   x0, id_aa64mmfr0_el1\r
-  adr   x1, .LPARanges\r
-  and   x0, x0, #7\r
-  ldrb  w1, [x1, x0]\r
-  mov   x0, #1\r
-  lsl   x0, x0, x1\r
-  ret\r
-\r
-//\r
-// Bits 0..2 of the AA64MFR0_EL1 system register encode the size of the\r
-// physical address space support on this CPU:\r
-// 0 == 32 bits, 1 == 36 bits, etc etc\r
-// 6 and 7 are reserved\r
-//\r
-.LPARanges:\r
-  .byte 32, 36, 40, 42, 44, 48, -1, -1\r
-\r
-ASM_FUNCTION_REMOVE_IF_UNREFERENCED\r
diff --git a/ArmVirtPkg/Library/XenVirtMemInfoLib/Arm/PhysAddrTop.S b/ArmVirtPkg/Library/XenVirtMemInfoLib/Arm/PhysAddrTop.S
deleted file mode 100644 (file)
index 9cd8152..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#\r
-#  Copyright (c) 2011-2013, ARM Limited. All rights reserved.\r
-#  Copyright (c) 2014-2017, Linaro Limited. All rights reserved.\r
-#\r
-#  This program and the accompanying materials\r
-#  are licensed and made available under the terms and conditions of the BSD License\r
-#  which accompanies this distribution.  The full text of the license may be found at\r
-#  http://opensource.org/licenses/bsd-license.php\r
-#\r
-#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
-#\r
-\r
-#include <AsmMacroIoLib.h>\r
-\r
-//EFI_PHYSICAL_ADDRESS\r
-//GetPhysAddrTop (\r
-//  VOID\r
-//  );\r
-ASM_FUNC(ArmGetPhysAddrTop)\r
-  mov   r0, #0x00000000\r
-  mov   r1, #0x10000\r
-  bx    lr\r
index 88ff316..d40aad7 100644 (file)
 \r
 #include <Base.h>\r
 #include <Library/ArmLib.h>\r
+#include <Library/BaseLib.h>\r
 #include <Library/DebugLib.h>\r
 \r
 STATIC ARM_MEMORY_REGION_DESCRIPTOR  mVirtualMemoryTable[2];\r
 \r
-EFI_PHYSICAL_ADDRESS\r
-ArmGetPhysAddrTop (\r
-  VOID\r
-  );\r
-\r
 /**\r
   Return the Virtual Memory Map of your platform\r
 \r
@@ -42,8 +38,12 @@ ArmVirtGetMemoryMap (
   OUT ARM_MEMORY_REGION_DESCRIPTOR   **VirtualMemoryMap\r
   )\r
 {\r
+  EFI_PHYSICAL_ADDRESS TopOfAddressSpace;\r
+\r
   ASSERT (VirtualMemoryMap != NULL);\r
 \r
+  TopOfAddressSpace = LShiftU64 (1ULL, ArmGetPhysicalAddressBits ());\r
+\r
   //\r
   // Map the entire physical memory space as cached. The only device\r
   // we care about is the GIC, which will be stage 2 mapped as a device\r
@@ -51,7 +51,7 @@ ArmVirtGetMemoryMap (
   //\r
   mVirtualMemoryTable[0].PhysicalBase = 0x0;\r
   mVirtualMemoryTable[0].VirtualBase  = 0x0;\r
-  mVirtualMemoryTable[0].Length       = ArmGetPhysAddrTop ();\r
+  mVirtualMemoryTable[0].Length       = TopOfAddressSpace;\r
   mVirtualMemoryTable[0].Attributes   = ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK;\r
 \r
   mVirtualMemoryTable[1].PhysicalBase = 0x0;\r
index cd4c805..b1fcde1 100644 (file)
 [Sources]\r
   XenVirtMemInfoLib.c\r
 \r
-[Sources.ARM]\r
-  Arm/PhysAddrTop.S\r
-\r
-[Sources.AARCH64]\r
-  AArch64/PhysAddrTop.S\r
-\r
 [Packages]\r
   ArmPkg/ArmPkg.dec\r
   ArmVirtPkg/ArmVirtPkg.dec\r
@@ -38,4 +32,5 @@
 \r
 [LibraryClasses]\r
   ArmLib\r
+  BaseLib\r
   DebugLib\r