mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-27 07:34:06 +02:00
SysCall: Refactored MakeUserPageTableTemplate().
This commit is contained in:
parent
bf581dc3ce
commit
1135998eae
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user