diff options
author | mdkinney <mdkinney@6f19259b-4bc3-4df7-8a09-765794883524> | 2008-11-15 23:59:07 +0000 |
---|---|---|
committer | mdkinney <mdkinney@6f19259b-4bc3-4df7-8a09-765794883524> | 2008-11-15 23:59:07 +0000 |
commit | f3b33289f064619ffd64fcdf124bf68d7403abc6 (patch) | |
tree | dc5a94c0a9db68ac5efd0c6a269a54c5cb3f6e84 /MdeModulePkg/Core/DxeIplPeim/X64/DxeLoadFunc.c | |
parent | d0a0826133bf50ef4a4cadb224e2ee67e61044c6 (diff) | |
download | edk2-platforms-f3b33289f064619ffd64fcdf124bf68d7403abc6.tar.xz |
Create X64 mode page tables in memory even when PEI is already X64
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6550 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Core/DxeIplPeim/X64/DxeLoadFunc.c')
-rw-r--r-- | MdeModulePkg/Core/DxeIplPeim/X64/DxeLoadFunc.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/MdeModulePkg/Core/DxeIplPeim/X64/DxeLoadFunc.c b/MdeModulePkg/Core/DxeIplPeim/X64/DxeLoadFunc.c index 51055e157a..05c5203d82 100644 --- a/MdeModulePkg/Core/DxeIplPeim/X64/DxeLoadFunc.c +++ b/MdeModulePkg/Core/DxeIplPeim/X64/DxeLoadFunc.c @@ -13,6 +13,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/
#include "DxeIpl.h"
+#include "X64/VirtualMemory.h"
@@ -36,6 +37,7 @@ HandOffToDxeCore ( VOID *BaseOfStack;
VOID *TopOfStack;
EFI_STATUS Status;
+ UINTN PageTables;
//
// Allocate 128KB for the Stack
@@ -51,11 +53,18 @@ HandOffToDxeCore ( TopOfStack = ALIGN_POINTER (TopOfStack, CPU_STACK_ALIGNMENT);
//
+ // Create page table and save PageMapLevel4 to CR3
+ //
+ PageTables = CreateIdentityMappingPageTables ();
+
+ //
// End of PEI phase singal
//
Status = PeiServicesInstallPpi (&gEndOfPeiSignalPpi);
ASSERT_EFI_ERROR (Status);
+ AsmWriteCr3 (PageTables);
+
//
// Update the contents of BSP stack HOB to reflect the real stack info passed to DxeCore.
//
|