diff --git a/MdeModulePkg/Core/Dxe/SysCall/IA32/InitializeIA32.c b/MdeModulePkg/Core/Dxe/SysCall/IA32/InitializeIA32.c index f9fe87feb6..60a9672e47 100644 --- a/MdeModulePkg/Core/Dxe/SysCall/IA32/InitializeIA32.c +++ b/MdeModulePkg/Core/Dxe/SysCall/IA32/InitializeIA32.c @@ -13,7 +13,7 @@ VOID EFIAPI MakeUserPageTableTemplate ( - OUT VOID **UserPageTableTemplate, + OUT UINTN *UserPageTableTemplate, OUT UINTN *UserPageTableTemplateSize ) { @@ -83,7 +83,7 @@ MakeUserPageTableTemplate ( ); } - *UserPageTableTemplate = (VOID *)PageMap; + *UserPageTableTemplate = (UINTN)PageMap; *UserPageTableTemplateSize = EFI_PAGES_TO_SIZE (TotalPagesNum); } diff --git a/MdeModulePkg/Core/Dxe/SysCall/Initialization.c b/MdeModulePkg/Core/Dxe/SysCall/Initialization.c index d2c18cb3e0..df9fc4a8b5 100644 --- a/MdeModulePkg/Core/Dxe/SysCall/Initialization.c +++ b/MdeModulePkg/Core/Dxe/SysCall/Initialization.c @@ -19,8 +19,6 @@ VOID *gRing3Interfaces; UINTN gUartBaseAddress; UEFI_IMAGE_RECORD *mDxeRing3; -VOID *mUserPageTableTemplate; -UINTN mUserPageTableTemplateSize; EXCEPTION_ADDRESSES *mExceptionAddresses; extern UINTN SysCallBase; @@ -29,7 +27,7 @@ extern UINTN SysCallEnd; VOID EFIAPI MakeUserPageTableTemplate ( - OUT VOID **UserPageTableTemplate, + OUT UINTN *UserPageTableTemplate, OUT UINTN *UserPageTableTemplateSize ); @@ -195,8 +193,6 @@ InitializeRing3 ( gRing3Data->SystemTable.NumberOfTableEntries ); - MakeUserPageTableTemplate (&mUserPageTableTemplate, &mUserPageTableTemplateSize); - mExceptionAddresses = GetExceptionAddresses (); return Status; @@ -209,15 +205,17 @@ InitializeUserPageTable ( ) { UINTN UserPageTable; + UINTN UserPageTableSize; UEFI_IMAGE_RECORD_SEGMENT *ImageRecordSegment; UINTN SectionAddress; UINT32 Index; UEFI_IMAGE_RECORD *UserImageRecord; IA32_DESCRIPTOR IdtDescriptor; - UserPageTable = (UINTN)AllocatePages (EFI_SIZE_TO_PAGES (mUserPageTableTemplateSize)); - - CopyMem ((VOID *)UserPageTable, mUserPageTableTemplate, mUserPageTableTemplateSize); + // + // TODO: Remove ASSERTs, add proper checks and return status. + // + MakeUserPageTableTemplate (&UserPageTable, &UserPageTableSize); // // Map gRing3Data, gRing3Interfaces, gRing3CallStackBase, DxeRing3 diff --git a/MdeModulePkg/Core/Dxe/SysCall/X64/InitializeX64.c b/MdeModulePkg/Core/Dxe/SysCall/X64/InitializeX64.c index 3754ab65f4..662e96b8b9 100644 --- a/MdeModulePkg/Core/Dxe/SysCall/X64/InitializeX64.c +++ b/MdeModulePkg/Core/Dxe/SysCall/X64/InitializeX64.c @@ -14,7 +14,7 @@ VOID EFIAPI MakeUserPageTableTemplate ( - OUT VOID **UserPageTableTemplate, + OUT UINTN *UserPageTableTemplate, OUT UINTN *UserPageTableTemplateSize ) { @@ -280,7 +280,7 @@ MakeUserPageTableTemplate ( ZeroMem (PageMapLevel5Entry, (512 - IndexOfPml5Entries) * sizeof (PAGE_MAP_AND_DIRECTORY_POINTER)); } - *UserPageTableTemplate = (VOID *)PageMap; + *UserPageTableTemplate = (UINTN)PageMap; *UserPageTableTemplateSize = EFI_PAGES_TO_SIZE (TotalPagesNum); }