mirror of
https://github.com/acidanthera/audk.git
synced 2025-04-08 17:05:09 +02:00
SysCall: Simplified MakeUserPageTableTemplate().
This commit is contained in:
parent
85070fbba0
commit
79e0eca155
MdeModulePkg/Core/Dxe/SysCall
OvmfPkg/Include/IndustryStandard
@ -42,7 +42,7 @@ MakeUserPageTableTemplate (
|
||||
NumberOfPdpEntriesNeeded = (UINT32)LShiftU64 (1, (PhysicalAddressBits - 30));
|
||||
|
||||
TotalPagesNum = NumberOfPdpEntriesNeeded + 1;
|
||||
PageAddress = (UINTN)AllocateAlignedPages (TotalPagesNum, PAGE_TABLE_POOL_ALIGNMENT);
|
||||
PageAddress = (UINTN)AllocatePages (TotalPagesNum);
|
||||
ASSERT (PageAddress != 0);
|
||||
|
||||
PageMap = (VOID *)PageAddress;
|
||||
@ -84,9 +84,7 @@ MakeUserPageTableTemplate (
|
||||
}
|
||||
|
||||
*UserPageTableTemplate = (VOID *)PageMap;
|
||||
*UserPageTableTemplateSize = ALIGN_VALUE (EFI_PAGES_TO_SIZE (TotalPagesNum), PAGE_TABLE_POOL_ALIGNMENT);
|
||||
|
||||
SetUefiImageMemoryAttributes ((UINT64)(UINTN)PageMap, *UserPageTableTemplateSize, EFI_MEMORY_XP);
|
||||
*UserPageTableTemplateSize = EFI_PAGES_TO_SIZE (TotalPagesNum);
|
||||
}
|
||||
|
||||
VOID
|
||||
|
@ -155,7 +155,7 @@ MakeUserPageTableTemplate (
|
||||
TotalPagesNum--;
|
||||
}
|
||||
|
||||
BigPageAddress = (UINTN)AllocateAlignedPages (TotalPagesNum, PAGE_TABLE_POOL_ALIGNMENT);
|
||||
BigPageAddress = (UINTN)AllocatePages (TotalPagesNum);
|
||||
if (BigPageAddress == 0) {
|
||||
DEBUG ((DEBUG_ERROR, "Core: Could not allocate buffer for User page table.\n"));
|
||||
CpuDeadLoop ();
|
||||
@ -281,9 +281,7 @@ MakeUserPageTableTemplate (
|
||||
}
|
||||
|
||||
*UserPageTableTemplate = (VOID *)PageMap;
|
||||
*UserPageTableTemplateSize = ALIGN_VALUE (EFI_PAGES_TO_SIZE (TotalPagesNum), PAGE_TABLE_POOL_ALIGNMENT);
|
||||
|
||||
SetUefiImageMemoryAttributes ((UINT64)PageMap, *UserPageTableTemplateSize, EFI_MEMORY_XP);
|
||||
*UserPageTableTemplateSize = EFI_PAGES_TO_SIZE (TotalPagesNum);
|
||||
}
|
||||
|
||||
VOID
|
||||
|
@ -158,6 +158,4 @@ typedef union {
|
||||
#define PTE_OFFSET(x) ( (x >> 12) & PAGETABLE_ENTRY_MASK)
|
||||
#define PAGING_1G_ADDRESS_MASK_64 0x000FFFFFC0000000ull
|
||||
|
||||
#define PAGE_TABLE_POOL_ALIGNMENT BASE_2MB
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user