| /** @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_ |