mirror of https://github.com/acidanthera/audk.git
75 lines
2.6 KiB
C
75 lines
2.6 KiB
C
/** @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_
|