123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /** @file
- Copyright (c) 2014-2017, Linaro Limited. All rights reserved.
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #include <Base.h>
- #include <Library/ArmLib.h>
- #include <Library/BaseLib.h>
- #include <Library/DebugLib.h>
- 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;
- }
|