/** @file | |
Copyright (c) 2015 - 2016, Linaro Ltd. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef ARM_MMU_LIB_H_ | |
#define ARM_MMU_LIB_H_ | |
#include <Uefi/UefiBaseType.h> | |
#include <Library/ArmLib.h> | |
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 | |
); | |
/** | |
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) | |
@param[in] BaseAddress The physical address that is the start address of | |
a memory region. | |
@param[in] Length The size in bytes of the memory region. | |
@param[in] Attributes Mask of memory attributes to set. | |
@param[in] AttributeMask Mask of memory attributes to take into account. | |
@retval EFI_SUCCESS The attributes were set for the memory region. | |
@retval EFI_INVALID_PARAMETER BaseAddress or Length is not suitably aligned. | |
Invalid combination of Attributes and | |
AttributeMask. | |
@retval EFI_OUT_OF_RESOURCES Requested attributes cannot be applied due to | |
lack of system resources. | |
**/ | |
EFI_STATUS | |
ArmSetMemoryAttributes ( | |
IN EFI_PHYSICAL_ADDRESS BaseAddress, | |
IN UINT64 Length, | |
IN UINT64 Attributes, | |
IN UINT64 AttributeMask | |
); | |
#endif // ARM_MMU_LIB_H_ |