SysCall: Simplified MakeUserPageTableTemplate().

This commit is contained in:
Mikhail Krichanov 2024-12-05 16:12:31 +03:00
parent 98f13417fb
commit 2b0b63c99a
3 changed files with 4 additions and 10 deletions

View File

@ -42,7 +42,7 @@ MakeUserPageTableTemplate (
NumberOfPdpEntriesNeeded = (UINT32)LShiftU64 (1, (PhysicalAddressBits - 30)); NumberOfPdpEntriesNeeded = (UINT32)LShiftU64 (1, (PhysicalAddressBits - 30));
TotalPagesNum = NumberOfPdpEntriesNeeded + 1; TotalPagesNum = NumberOfPdpEntriesNeeded + 1;
PageAddress = (UINTN)AllocateAlignedPages (TotalPagesNum, PAGE_TABLE_POOL_ALIGNMENT); PageAddress = (UINTN)AllocatePages (TotalPagesNum);
ASSERT (PageAddress != 0); ASSERT (PageAddress != 0);
PageMap = (VOID *)PageAddress; PageMap = (VOID *)PageAddress;
@ -84,9 +84,7 @@ MakeUserPageTableTemplate (
} }
*UserPageTableTemplate = (VOID *)PageMap; *UserPageTableTemplate = (VOID *)PageMap;
*UserPageTableTemplateSize = ALIGN_VALUE (EFI_PAGES_TO_SIZE (TotalPagesNum), PAGE_TABLE_POOL_ALIGNMENT); *UserPageTableTemplateSize = EFI_PAGES_TO_SIZE (TotalPagesNum);
SetUefiImageMemoryAttributes ((UINT64)(UINTN)PageMap, *UserPageTableTemplateSize, EFI_MEMORY_XP);
} }
VOID VOID

View File

@ -155,7 +155,7 @@ MakeUserPageTableTemplate (
TotalPagesNum--; TotalPagesNum--;
} }
BigPageAddress = (UINTN)AllocateAlignedPages (TotalPagesNum, PAGE_TABLE_POOL_ALIGNMENT); BigPageAddress = (UINTN)AllocatePages (TotalPagesNum);
if (BigPageAddress == 0) { if (BigPageAddress == 0) {
DEBUG ((DEBUG_ERROR, "Core: Could not allocate buffer for User page table.\n")); DEBUG ((DEBUG_ERROR, "Core: Could not allocate buffer for User page table.\n"));
CpuDeadLoop (); CpuDeadLoop ();
@ -281,9 +281,7 @@ MakeUserPageTableTemplate (
} }
*UserPageTableTemplate = (VOID *)PageMap; *UserPageTableTemplate = (VOID *)PageMap;
*UserPageTableTemplateSize = ALIGN_VALUE (EFI_PAGES_TO_SIZE (TotalPagesNum), PAGE_TABLE_POOL_ALIGNMENT); *UserPageTableTemplateSize = EFI_PAGES_TO_SIZE (TotalPagesNum);
SetUefiImageMemoryAttributes ((UINT64)PageMap, *UserPageTableTemplateSize, EFI_MEMORY_XP);
} }
VOID VOID

View File

@ -158,6 +158,4 @@ typedef union {
#define PTE_OFFSET(x) ( (x >> 12) & PAGETABLE_ENTRY_MASK) #define PTE_OFFSET(x) ( (x >> 12) & PAGETABLE_ENTRY_MASK)
#define PAGING_1G_ADDRESS_MASK_64 0x000FFFFFC0000000ull #define PAGING_1G_ADDRESS_MASK_64 0x000FFFFFC0000000ull
#define PAGE_TABLE_POOL_ALIGNMENT BASE_2MB
#endif #endif