diff options
Diffstat (limited to 'ArmPkg')
-rw-r--r-- | ArmPkg/Drivers/CpuDxe/CpuDxe.c | 6 | ||||
-rw-r--r-- | ArmPkg/Include/Library/ArmMmuLib.h | 62 | ||||
-rw-r--r-- | ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c | 136 | ||||
-rw-r--r-- | ArmPkg/Library/ArmMmuLib/Arm/ArmMmuLibUpdate.c | 104 |
4 files changed, 4 insertions, 304 deletions
diff --git a/ArmPkg/Drivers/CpuDxe/CpuDxe.c b/ArmPkg/Drivers/CpuDxe/CpuDxe.c index f820f3f621..fc63e52784 100644 --- a/ArmPkg/Drivers/CpuDxe/CpuDxe.c +++ b/ArmPkg/Drivers/CpuDxe/CpuDxe.c @@ -288,9 +288,11 @@ RemapUnusedMemoryNx ( MemoryMapEnd = (EFI_MEMORY_DESCRIPTOR *)((UINT8 *)MemoryMap + MemoryMapSize);
while ((UINTN)MemoryMapEntry < (UINTN)MemoryMapEnd) {
if (MemoryMapEntry->Type == EfiConventionalMemory) {
- ArmSetMemoryRegionNoExec (
+ ArmSetMemoryAttributes (
MemoryMapEntry->PhysicalStart,
- EFI_PAGES_TO_SIZE (MemoryMapEntry->NumberOfPages)
+ EFI_PAGES_TO_SIZE (MemoryMapEntry->NumberOfPages),
+ EFI_MEMORY_XP,
+ EFI_MEMORY_XP
);
}
diff --git a/ArmPkg/Include/Library/ArmMmuLib.h b/ArmPkg/Include/Library/ArmMmuLib.h index 91d112314f..2ce948e8db 100644 --- a/ArmPkg/Include/Library/ArmMmuLib.h +++ b/ArmPkg/Include/Library/ArmMmuLib.h @@ -21,68 +21,6 @@ ArmConfigureMmu ( OUT UINTN *TranslationTableSize OPTIONAL
);
-/**
- Convert a region of memory to read-protected, by clearing the access flag.
-
- @param BaseAddress The start of the region.
- @param Length The size of the region.
-
- @retval EFI_SUCCESS The attributes were set successfully.
- @retval EFI_OUT_OF_RESOURCES The operation failed due to insufficient memory.
-
-**/
-EFI_STATUS
-EFIAPI
-ArmSetMemoryRegionNoAccess (
- IN EFI_PHYSICAL_ADDRESS BaseAddress,
- IN UINT64 Length
- );
-
-/**
- Convert a region of memory to read-enabled, by setting the access flag.
-
- @param BaseAddress The start of the region.
- @param Length The size of the region.
-
- @retval EFI_SUCCESS The attributes were set successfully.
- @retval EFI_OUT_OF_RESOURCES The operation failed due to insufficient memory.
-
-**/
-EFI_STATUS
-EFIAPI
-ArmClearMemoryRegionNoAccess (
- IN EFI_PHYSICAL_ADDRESS BaseAddress,
- IN UINT64 Length
- );
-
-EFI_STATUS
-EFIAPI
-ArmSetMemoryRegionNoExec (
- IN EFI_PHYSICAL_ADDRESS BaseAddress,
- IN UINT64 Length
- );
-
-EFI_STATUS
-EFIAPI
-ArmClearMemoryRegionNoExec (
- IN EFI_PHYSICAL_ADDRESS BaseAddress,
- IN UINT64 Length
- );
-
-EFI_STATUS
-EFIAPI
-ArmSetMemoryRegionReadOnly (
- IN EFI_PHYSICAL_ADDRESS BaseAddress,
- IN UINT64 Length
- );
-
-EFI_STATUS
-EFIAPI
-ArmClearMemoryRegionReadOnly (
- IN EFI_PHYSICAL_ADDRESS BaseAddress,
- IN UINT64 Length
- );
-
VOID
EFIAPI
ArmReplaceLiveTranslationEntry (
diff --git a/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c b/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c index 22623572b9..1e57e58997 100644 --- a/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c +++ b/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c @@ -552,142 +552,6 @@ ArmSetMemoryAttributes ( );
}
-STATIC
-EFI_STATUS
-SetMemoryRegionAttribute (
- IN EFI_PHYSICAL_ADDRESS BaseAddress,
- IN UINT64 Length,
- IN UINT64 Attributes,
- IN UINT64 BlockEntryMask
- )
-{
- return UpdateRegionMapping (
- BaseAddress,
- Length,
- Attributes,
- BlockEntryMask,
- ArmGetTTBR0BaseAddress (),
- TRUE
- );
-}
-
-EFI_STATUS
-ArmSetMemoryRegionNoExec (
- IN EFI_PHYSICAL_ADDRESS BaseAddress,
- IN UINT64 Length
- )
-{
- UINT64 Val;
-
- if (ArmReadCurrentEL () == AARCH64_EL1) {
- Val = TT_PXN_MASK | TT_UXN_MASK;
- } else {
- Val = TT_XN_MASK;
- }
-
- return SetMemoryRegionAttribute (
- BaseAddress,
- Length,
- Val,
- ~TT_ADDRESS_MASK_BLOCK_ENTRY
- );
-}
-
-EFI_STATUS
-ArmClearMemoryRegionNoExec (
- IN EFI_PHYSICAL_ADDRESS BaseAddress,
- IN UINT64 Length
- )
-{
- UINT64 Mask;
-
- // XN maps to UXN in the EL1&0 translation regime
- Mask = ~(TT_ADDRESS_MASK_BLOCK_ENTRY | TT_PXN_MASK | TT_XN_MASK);
-
- return SetMemoryRegionAttribute (
- BaseAddress,
- Length,
- 0,
- Mask
- );
-}
-
-/**
- Convert a region of memory to read-protected, by clearing the access flag.
-
- @param BaseAddress The start of the region.
- @param Length The size of the region.
-
- @retval EFI_SUCCESS The attributes were set successfully.
- @retval EFI_OUT_OF_RESOURCES The operation failed due to insufficient memory.
-
-**/
-EFI_STATUS
-ArmSetMemoryRegionNoAccess (
- IN EFI_PHYSICAL_ADDRESS BaseAddress,
- IN UINT64 Length
- )
-{
- return SetMemoryRegionAttribute (
- BaseAddress,
- Length,
- 0,
- ~(TT_ADDRESS_MASK_BLOCK_ENTRY | TT_AF)
- );
-}
-
-/**
- Convert a region of memory to read-enabled, by setting the access flag.
-
- @param BaseAddress The start of the region.
- @param Length The size of the region.
-
- @retval EFI_SUCCESS The attributes were set successfully.
- @retval EFI_OUT_OF_RESOURCES The operation failed due to insufficient memory.
-
-**/
-EFI_STATUS
-ArmClearMemoryRegionNoAccess (
- IN EFI_PHYSICAL_ADDRESS BaseAddress,
- IN UINT64 Length
- )
-{
- return SetMemoryRegionAttribute (
- BaseAddress,
- Length,
- TT_AF,
- ~TT_ADDRESS_MASK_BLOCK_ENTRY
- );
-}
-
-EFI_STATUS
-ArmSetMemoryRegionReadOnly (
- IN EFI_PHYSICAL_ADDRESS BaseAddress,
- IN UINT64 Length
- )
-{
- return SetMemoryRegionAttribute (
- BaseAddress,
- Length,
- TT_AP_NO_RO,
- ~TT_ADDRESS_MASK_BLOCK_ENTRY
- );
-}
-
-EFI_STATUS
-ArmClearMemoryRegionReadOnly (
- IN EFI_PHYSICAL_ADDRESS BaseAddress,
- IN UINT64 Length
- )
-{
- return SetMemoryRegionAttribute (
- BaseAddress,
- Length,
- TT_AP_NO_RW,
- ~(TT_ADDRESS_MASK_BLOCK_ENTRY | TT_AP_MASK)
- );
-}
-
EFI_STATUS
EFIAPI
ArmConfigureMmu (
diff --git a/ArmPkg/Library/ArmMmuLib/Arm/ArmMmuLibUpdate.c b/ArmPkg/Library/ArmMmuLib/Arm/ArmMmuLibUpdate.c index 61405965a7..548ee13038 100644 --- a/ArmPkg/Library/ArmMmuLib/Arm/ArmMmuLibUpdate.c +++ b/ArmPkg/Library/ArmMmuLib/Arm/ArmMmuLibUpdate.c @@ -544,107 +544,3 @@ ArmSetMemoryAttributes ( TtEntryMask
);
}
-
-EFI_STATUS
-ArmSetMemoryRegionNoExec (
- IN EFI_PHYSICAL_ADDRESS BaseAddress,
- IN UINT64 Length
- )
-{
- return SetMemoryAttributes (
- BaseAddress,
- Length,
- EFI_MEMORY_XP,
- TT_DESCRIPTOR_SECTION_XN_MASK
- );
-}
-
-EFI_STATUS
-ArmClearMemoryRegionNoExec (
- IN EFI_PHYSICAL_ADDRESS BaseAddress,
- IN UINT64 Length
- )
-{
- return SetMemoryAttributes (
- BaseAddress,
- Length,
- 0,
- TT_DESCRIPTOR_SECTION_XN_MASK
- );
-}
-
-EFI_STATUS
-ArmSetMemoryRegionReadOnly (
- IN EFI_PHYSICAL_ADDRESS BaseAddress,
- IN UINT64 Length
- )
-{
- return SetMemoryAttributes (
- BaseAddress,
- Length,
- EFI_MEMORY_RO,
- TT_DESCRIPTOR_SECTION_AP_MASK
- );
-}
-
-EFI_STATUS
-ArmClearMemoryRegionReadOnly (
- IN EFI_PHYSICAL_ADDRESS BaseAddress,
- IN UINT64 Length
- )
-{
- return SetMemoryAttributes (
- BaseAddress,
- Length,
- 0,
- TT_DESCRIPTOR_SECTION_AP_MASK
- );
-}
-
-/**
- Convert a region of memory to read-protected, by clearing the access flag.
-
- @param BaseAddress The start of the region.
- @param Length The size of the region.
-
- @retval EFI_SUCCESS The attributes were set successfully.
- @retval EFI_OUT_OF_RESOURCES The operation failed due to insufficient memory.
-
-**/
-EFI_STATUS
-ArmSetMemoryRegionNoAccess (
- IN EFI_PHYSICAL_ADDRESS BaseAddress,
- IN UINT64 Length
- )
-{
- return SetMemoryAttributes (
- BaseAddress,
- Length,
- EFI_MEMORY_RP,
- TT_DESCRIPTOR_SECTION_AF
- );
-}
-
-/**
- Convert a region of memory to read-enabled, by setting the access flag.
-
- @param BaseAddress The start of the region.
- @param Length The size of the region.
-
- @retval EFI_SUCCESS The attributes were set successfully.
- @retval EFI_OUT_OF_RESOURCES The operation failed due to insufficient memory.
-
-**/
-EFI_STATUS
-ArmClearMemoryRegionNoAccess (
- IN EFI_PHYSICAL_ADDRESS BaseAddress,
- IN UINT64 Length
- )
-{
- return SetMemoryAttributes (
- BaseAddress,
- Length,
- 0,
- TT_DESCRIPTOR_SECTION_AF
- );
-}
|