/** @file Copyright (c) 2014-2017, Linaro Limited. All rights reserved. SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include #include #include #include STATIC ARM_MEMORY_REGION_DESCRIPTOR mVirtualMemoryTable[2]; /** Return the Virtual Memory Map of your platform This Virtual Memory Map is used by MemoryInitPei Module to initialize the MMU on your platform. @param[out] VirtualMemoryMap Array of ARM_MEMORY_REGION_DESCRIPTOR describing a Physical-to-Virtual Memory mapping. This array must be ended by a zero-filled entry. The allocated memory will not be freed. **/ VOID EFIAPI ArmVirtGetMemoryMap ( OUT ARM_MEMORY_REGION_DESCRIPTOR **VirtualMemoryMap ) { EFI_PHYSICAL_ADDRESS TopOfAddressSpace; ASSERT (VirtualMemoryMap != NULL); TopOfAddressSpace = LShiftU64 (1ULL, ArmGetPhysicalAddressBits ()); // // Map the entire physical memory space as cached. The only device // we care about is the GIC, which will be stage 2 mapped as a device // by the hypervisor, overriding the cached mapping we install here. // mVirtualMemoryTable[0].PhysicalBase = 0x0; mVirtualMemoryTable[0].VirtualBase = 0x0; mVirtualMemoryTable[0].Length = TopOfAddressSpace; mVirtualMemoryTable[0].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK; mVirtualMemoryTable[1].PhysicalBase = 0x0; mVirtualMemoryTable[1].VirtualBase = 0x0; mVirtualMemoryTable[1].Length = 0x0; mVirtualMemoryTable[1].Attributes = 0x0; *VirtualMemoryMap = mVirtualMemoryTable; }