]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg: Add PcdDxeIplBuildPageTables for DxeIpl X64 to optionally not rebuild...
authorandrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 14 Jul 2011 02:31:02 +0000 (02:31 +0000)
committerandrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 14 Jul 2011 02:31:02 +0000 (02:31 +0000)
signed-off-by: andrewfish
reviewed-by: rsun3

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12016 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
MdeModulePkg/Core/DxeIplPeim/X64/DxeLoadFunc.c
MdeModulePkg/MdeModulePkg.dec

index 5c5f7e82a57216312b17cf9972e368a908ba0890..784fdf18f662d507144289dee757cedf5ffc91fe 100644 (file)
@@ -45,7 +45,7 @@
 [Sources.X64]\r
   X64/VirtualMemory.h\r
   X64/VirtualMemory.c\r
-  X64/DxeLoadFunc.c\r
+  X64/DxeLoadFunc.c    \r
 \r
 [Sources.IPF]\r
   Ipf/DxeLoadFunc.c\r
@@ -90,6 +90,9 @@
 [FeaturePcd.IA32]\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode\r
 \r
+[FeaturePcd.X64]\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplBuildPageTables\r
+\r
 [FeaturePcd]\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSupportUefiDecompress\r
 \r
index 1b12801d67f2b0c0bfc4303724c4a4bc8e57e23e..729e1ee3250dd0a92297220aafa4239991baeddb 100644 (file)
@@ -52,18 +52,22 @@ HandOffToDxeCore (
   TopOfStack = (VOID *) ((UINTN) BaseOfStack + EFI_SIZE_TO_PAGES (STACK_SIZE) * EFI_PAGE_SIZE - CPU_STACK_ALIGNMENT);\r
   TopOfStack = ALIGN_POINTER (TopOfStack, CPU_STACK_ALIGNMENT);\r
 \r
-  //\r
-  // Create page table and save PageMapLevel4 to CR3\r
-  //\r
-  PageTables = CreateIdentityMappingPageTables ();\r
-\r
+  if (FeaturePcdGet (PcdDxeIplBuildPageTables)) {\r
+    //\r
+    // Create page table and save PageMapLevel4 to CR3\r
+    //\r
+    PageTables = CreateIdentityMappingPageTables ();\r
+  }\r
+  \r
   //\r
   // End of PEI phase signal\r
   //\r
   Status = PeiServicesInstallPpi (&gEndOfPeiSignalPpi);\r
   ASSERT_EFI_ERROR (Status);\r
 \r
-  AsmWriteCr3 (PageTables);\r
+  if (FeaturePcdGet (PcdDxeIplBuildPageTables)) {\r
+    AsmWriteCr3 (PageTables);\r
+  }\r
 \r
   //\r
   // Update the contents of BSP stack HOB to reflect the real stack info passed to DxeCore.\r
index 92e56ded559f6ccf7a7681f0dfe3099599bdb969..a86a0462c4805240e1405bbb1a01399a2d53050f 100644 (file)
   #\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode|TRUE|BOOLEAN|0x0001003b\r
 \r
+  ##\r
+  # This feature flag specifies whether DxeIpl should rebuild page tables. This flag only\r
+  # makes sense in the case where the DxeIpl and the DxeCore are both X64.\r
+  #\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplBuildPageTables|TRUE|BOOLEAN|0x0001003c\r
+\r
 [PcdsFixedAtBuild]\r
   ## Dynamic type PCD can be registered callback function for Pcd setting action.\r
   #  PcdMaxPeiPcdCallBackNumberPerPcdEntry indicate maximum number of callback function\r