TianoCore EDK2 master
Loading...
Searching...
No Matches
ArmMmuLibUpdate.c File Reference

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)
 

Detailed Description

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.

Macro Definition Documentation

◆ __EFI_MEMORY_RWX

#define __EFI_MEMORY_RWX   0

Definition at line 22 of file ArmMmuLibUpdate.c.

◆ CACHE_ATTRIBUTE_MASK

#define CACHE_ATTRIBUTE_MASK
Value:
(EFI_MEMORY_UC | \
EFI_MEMORY_WC | \
EFI_MEMORY_WT | \
EFI_MEMORY_WB | \
EFI_MEMORY_UCE | \
EFI_MEMORY_WP)

Definition at line 24 of file ArmMmuLibUpdate.c.

Function Documentation

◆ ArmSetMemoryAttributes()

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)

Parameters
[in]BaseAddressThe physical address that is the start address of a memory region.
[in]LengthThe size in bytes of the memory region.
[in]AttributesMask of memory attributes to set.
[in]AttributeMaskMask of memory attributes to take into account.
Return values
EFI_SUCCESSThe attributes were set for the memory region.
EFI_INVALID_PARAMETERBaseAddress or Length is not suitably aligned. Invalid combination of Attributes and AttributeMask.
EFI_OUT_OF_RESOURCESRequested attributes cannot be applied due to lack of system resources.

Definition at line 503 of file ArmMmuLibUpdate.c.

◆ ConvertSectionToPages()

STATIC EFI_STATUS ConvertSectionToPages ( IN EFI_PHYSICAL_ADDRESS  BaseAddress)

Definition at line 33 of file ArmMmuLibUpdate.c.

◆ SetMemoryAttributes()

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.

Parameters
BaseAddressThe start of the region.
LengthThe size of the region.
AttributesA mask of EFI_MEMORY_xx constants.
SectionMaskA mask of short descriptor section attributes describing which descriptor bits to update.
Return values
EFI_SUCCESSThe attributes were set successfully.
EFI_OUT_OF_RESOURCESThe operation failed due to insufficient memory.

Definition at line 368 of file ArmMmuLibUpdate.c.

◆ UpdatePageEntries()

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.

◆ UpdateSectionEntries()

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.