SysCall: Refactored MakeUserPageTableTemplate().

This commit is contained in:
Mikhail Krichanov 2024-12-09 14:29:38 +03:00
parent bf581dc3ce
commit 1135998eae
3 changed files with 10 additions and 12 deletions

View File

@ -13,7 +13,7 @@
VOID VOID
EFIAPI EFIAPI
MakeUserPageTableTemplate ( MakeUserPageTableTemplate (
OUT VOID **UserPageTableTemplate, OUT UINTN *UserPageTableTemplate,
OUT UINTN *UserPageTableTemplateSize OUT UINTN *UserPageTableTemplateSize
) )
{ {
@ -83,7 +83,7 @@ MakeUserPageTableTemplate (
); );
} }
*UserPageTableTemplate = (VOID *)PageMap; *UserPageTableTemplate = (UINTN)PageMap;
*UserPageTableTemplateSize = EFI_PAGES_TO_SIZE (TotalPagesNum); *UserPageTableTemplateSize = EFI_PAGES_TO_SIZE (TotalPagesNum);
} }

View File

@ -19,8 +19,6 @@ VOID *gRing3Interfaces;
UINTN gUartBaseAddress; UINTN gUartBaseAddress;
UEFI_IMAGE_RECORD *mDxeRing3; UEFI_IMAGE_RECORD *mDxeRing3;
VOID *mUserPageTableTemplate;
UINTN mUserPageTableTemplateSize;
EXCEPTION_ADDRESSES *mExceptionAddresses; EXCEPTION_ADDRESSES *mExceptionAddresses;
extern UINTN SysCallBase; extern UINTN SysCallBase;
@ -29,7 +27,7 @@ extern UINTN SysCallEnd;
VOID VOID
EFIAPI EFIAPI
MakeUserPageTableTemplate ( MakeUserPageTableTemplate (
OUT VOID **UserPageTableTemplate, OUT UINTN *UserPageTableTemplate,
OUT UINTN *UserPageTableTemplateSize OUT UINTN *UserPageTableTemplateSize
); );
@ -195,8 +193,6 @@ InitializeRing3 (
gRing3Data->SystemTable.NumberOfTableEntries gRing3Data->SystemTable.NumberOfTableEntries
); );
MakeUserPageTableTemplate (&mUserPageTableTemplate, &mUserPageTableTemplateSize);
mExceptionAddresses = GetExceptionAddresses (); mExceptionAddresses = GetExceptionAddresses ();
return Status; return Status;
@ -209,15 +205,17 @@ InitializeUserPageTable (
) )
{ {
UINTN UserPageTable; UINTN UserPageTable;
UINTN UserPageTableSize;
UEFI_IMAGE_RECORD_SEGMENT *ImageRecordSegment; UEFI_IMAGE_RECORD_SEGMENT *ImageRecordSegment;
UINTN SectionAddress; UINTN SectionAddress;
UINT32 Index; UINT32 Index;
UEFI_IMAGE_RECORD *UserImageRecord; UEFI_IMAGE_RECORD *UserImageRecord;
IA32_DESCRIPTOR IdtDescriptor; IA32_DESCRIPTOR IdtDescriptor;
UserPageTable = (UINTN)AllocatePages (EFI_SIZE_TO_PAGES (mUserPageTableTemplateSize)); //
// TODO: Remove ASSERTs, add proper checks and return status.
CopyMem ((VOID *)UserPageTable, mUserPageTableTemplate, mUserPageTableTemplateSize); //
MakeUserPageTableTemplate (&UserPageTable, &UserPageTableSize);
// //
// Map gRing3Data, gRing3Interfaces, gRing3CallStackBase, DxeRing3 // Map gRing3Data, gRing3Interfaces, gRing3CallStackBase, DxeRing3

View File

@ -14,7 +14,7 @@
VOID VOID
EFIAPI EFIAPI
MakeUserPageTableTemplate ( MakeUserPageTableTemplate (
OUT VOID **UserPageTableTemplate, OUT UINTN *UserPageTableTemplate,
OUT UINTN *UserPageTableTemplateSize OUT UINTN *UserPageTableTemplateSize
) )
{ {
@ -280,7 +280,7 @@ MakeUserPageTableTemplate (
ZeroMem (PageMapLevel5Entry, (512 - IndexOfPml5Entries) * sizeof (PAGE_MAP_AND_DIRECTORY_POINTER)); ZeroMem (PageMapLevel5Entry, (512 - IndexOfPml5Entries) * sizeof (PAGE_MAP_AND_DIRECTORY_POINTER));
} }
*UserPageTableTemplate = (VOID *)PageMap; *UserPageTableTemplate = (UINTN)PageMap;
*UserPageTableTemplateSize = EFI_PAGES_TO_SIZE (TotalPagesNum); *UserPageTableTemplateSize = EFI_PAGES_TO_SIZE (TotalPagesNum);
} }