summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Core/DxeIplPeim/X64/DxeLoadFunc.c
diff options
context:
space:
mode:
authormdkinney <mdkinney@6f19259b-4bc3-4df7-8a09-765794883524>2008-11-15 23:59:07 +0000
committermdkinney <mdkinney@6f19259b-4bc3-4df7-8a09-765794883524>2008-11-15 23:59:07 +0000
commitf3b33289f064619ffd64fcdf124bf68d7403abc6 (patch)
treedc5a94c0a9db68ac5efd0c6a269a54c5cb3f6e84 /MdeModulePkg/Core/DxeIplPeim/X64/DxeLoadFunc.c
parentd0a0826133bf50ef4a4cadb224e2ee67e61044c6 (diff)
downloadedk2-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.c9
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.
//