mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-24 22:24:37 +02:00
SysCall: Simplified MakeUserPageTableTemplate().
This commit is contained in:
parent
98f13417fb
commit
2b0b63c99a
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user