TianoCore EDK2 master
Loading...
Searching...
No Matches
ArmMmuLib.h File Reference
#include <Uefi/UefiBaseType.h>
#include <Library/ArmLib.h>

Go to the source code of this file.

Functions

EFI_STATUS EFIAPI ArmConfigureMmu (IN ARM_MEMORY_REGION_DESCRIPTOR *MemoryTable, OUT VOID **TranslationTableBase OPTIONAL, OUT UINTN *TranslationTableSize OPTIONAL)
 
VOID EFIAPI ArmReplaceLiveTranslationEntry (IN UINT64 *Entry, IN UINT64 Value, IN UINT64 RegionStart, IN BOOLEAN DisableMmu)
 
EFI_STATUS ArmSetMemoryAttributes (IN EFI_PHYSICAL_ADDRESS BaseAddress, IN UINT64 Length, IN UINT64 Attributes, IN UINT64 AttributeMask)
 

Detailed Description

Copyright (c) 2015 - 2016, Linaro Ltd. All rights reserved.

SPDX-License-Identifier: BSD-2-Clause-Patent

Definition in file ArmMmuLib.h.

Function Documentation

◆ ArmConfigureMmu()

EFI_STATUS EFIAPI ArmConfigureMmu ( IN ARM_MEMORY_REGION_DESCRIPTOR MemoryTable,
OUT VOID **TranslationTableBase  OPTIONAL,
OUT UINTN *TranslationTableSize  OPTIONAL 
)

Definition at line 557 of file ArmMmuLibCore.c.

◆ 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 506 of file ArmMmuLibCore.c.