TianoCore EDK2 master
|
#include <Uefi.h>
#include <Library/ArmLib.h>
#include <Library/ArmMmuLib.h>
#include <Library/BaseLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/DebugLib.h>
#include <Library/CacheMaintenanceLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Arm/AArch32.h>
Go to the source code of this file.
Macros | |
#define | __EFI_MEMORY_RWX 0 |
#define | CACHE_ATTRIBUTE_MASK |
Functions | |
STATIC EFI_STATUS | ConvertSectionToPages (IN EFI_PHYSICAL_ADDRESS BaseAddress) |
STATIC EFI_STATUS | UpdatePageEntries (IN EFI_PHYSICAL_ADDRESS BaseAddress, IN UINT64 Length, IN UINT64 Attributes, IN UINT32 EntryMask, OUT BOOLEAN *FlushTlbs OPTIONAL) |
STATIC EFI_STATUS | UpdateSectionEntries (IN EFI_PHYSICAL_ADDRESS BaseAddress, IN UINT64 Length, IN UINT64 Attributes, IN UINT32 EntryMask) |
STATIC EFI_STATUS | SetMemoryAttributes (IN EFI_PHYSICAL_ADDRESS BaseAddress, IN UINT64 Length, IN UINT64 Attributes, IN UINT32 SectionMask) |
EFI_STATUS | ArmSetMemoryAttributes (IN EFI_PHYSICAL_ADDRESS BaseAddress, IN UINT64 Length, IN UINT64 Attributes, IN UINT64 AttributeMask) |
File managing the MMU for ARMv7 architecture
Copyright (c) 2011-2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file ArmMmuLibUpdate.c.
#define __EFI_MEMORY_RWX 0 |
Definition at line 22 of file ArmMmuLibUpdate.c.
#define CACHE_ATTRIBUTE_MASK |
Definition at line 24 of file ArmMmuLibUpdate.c.
EFI_STATUS ArmSetMemoryAttributes | ( | IN EFI_PHYSICAL_ADDRESS | BaseAddress, |
IN UINT64 | Length, | ||
IN UINT64 | Attributes, | ||
IN UINT64 | AttributeMask | ||
) |
Set the requested memory permission attributes on a region of memory.
BaseAddress and Length must be aligned to EFI_PAGE_SIZE.
If Attributes contains a memory type attribute (EFI_MEMORY_UC/WC/WT/WB), the region is mapped according to this memory type, and additional memory permission attributes (EFI_MEMORY_RP/RO/XP) are taken into account as well, discarding any permission attributes that are currently set for the region. AttributeMask is ignored in this case, and must be set to 0x0.
If Attributes contains only a combination of memory permission attributes (EFI_MEMORY_RP/RO/XP), each page in the region will retain its existing memory type, even if it is not uniformly set across the region. In this case, AttributesMask may be set to a mask of permission attributes, and memory permissions omitted from this mask will not be updated for any page in the region. All attributes appearing in Attributes must appear in AttributeMask as well. (Attributes & ~AttributeMask must produce 0x0)
[in] | BaseAddress | The physical address that is the start address of a memory region. |
[in] | Length | The size in bytes of the memory region. |
[in] | Attributes | Mask of memory attributes to set. |
[in] | AttributeMask | Mask of memory attributes to take into account. |
EFI_SUCCESS | The attributes were set for the memory region. |
EFI_INVALID_PARAMETER | BaseAddress or Length is not suitably aligned. Invalid combination of Attributes and AttributeMask. |
EFI_OUT_OF_RESOURCES | Requested attributes cannot be applied due to lack of system resources. |
Definition at line 503 of file ArmMmuLibUpdate.c.
STATIC EFI_STATUS ConvertSectionToPages | ( | IN EFI_PHYSICAL_ADDRESS | BaseAddress | ) |
Definition at line 33 of file ArmMmuLibUpdate.c.
STATIC EFI_STATUS SetMemoryAttributes | ( | IN EFI_PHYSICAL_ADDRESS | BaseAddress, |
IN UINT64 | Length, | ||
IN UINT64 | Attributes, | ||
IN UINT32 | SectionMask | ||
) |
Update the permission or memory type attributes on a range of memory.
BaseAddress | The start of the region. |
Length | The size of the region. |
Attributes | A mask of EFI_MEMORY_xx constants. |
SectionMask | A mask of short descriptor section attributes describing which descriptor bits to update. |
EFI_SUCCESS | The attributes were set successfully. |
EFI_OUT_OF_RESOURCES | The operation failed due to insufficient memory. |
Definition at line 368 of file ArmMmuLibUpdate.c.
STATIC EFI_STATUS UpdatePageEntries | ( | IN EFI_PHYSICAL_ADDRESS | BaseAddress, |
IN UINT64 | Length, | ||
IN UINT64 | Attributes, | ||
IN UINT32 | EntryMask, | ||
OUT BOOLEAN *FlushTlbs | OPTIONAL | ||
) |
Definition at line 81 of file ArmMmuLibUpdate.c.
STATIC EFI_STATUS UpdateSectionEntries | ( | IN EFI_PHYSICAL_ADDRESS | BaseAddress, |
IN UINT64 | Length, | ||
IN UINT64 | Attributes, | ||
IN UINT32 | EntryMask | ||
) |
Definition at line 231 of file ArmMmuLibUpdate.c.