]> git.proxmox.com Git - mirror_edk2.git/blobdiff - DuetPkg/DxeIpl/DxeInit.c
Fixup RELEASE build to use some NULL libs
[mirror_edk2.git] / DuetPkg / DxeIpl / DxeInit.c
index e42cd4c0db3e94098f4e743c8277c819ff4e09b9..bee7f1130760b78ccf8f3a43beadd320b6324980 100644 (file)
@@ -78,14 +78,16 @@ MemoryAbove1MB.PhysicalStart <--------------------------------------------------
                         <------------------------------+           |               |\r
         Permament Stack (0x20 Pages = 128K)                        |               |\r
                         <- Phit.EfiMemoryTop ----------+-----------+---------------+\r
-        DxeCore                                                                    |\r
-                                                                                DxeCore\r
-        DxeIpl                                                                     |\r
-                        <----------------------------------------------------------+\r
-        NvFV + FtwFV                                                               |\r
+        NvFV (64K)                                                                 |\r
                                                                                  MMIO\r
-        BFV                                                                        |\r
-                        <- Top of Free Memory reported by E820 --------------------+\r
+        FtwFV (128K)                                                               |  \r
+                        <----------------------------------------------------------+<---------+\r
+        DxeCore                                                                    |          |\r
+                                                                                DxeCore       |\r
+        DxeIpl                                                                     |   Allocated in EfiLdr\r
+                        <----------------------------------------------------------+          |\r
+        BFV                                                                      MMIO         |\r
+                        <- Top of Free Memory reported by E820 --------------------+<---------+\r
         ACPINVS        or\r
         ACPIReclaim    or\r
         Reserved\r
@@ -136,8 +138,10 @@ Returns:
   VOID                  *MemoryDescriptor;\r
   VOID                  *NvStorageBase;\r
   CHAR8                 PrintBuffer[256];\r
-\r
+  \r
+  ClearScreen();\r
   PrintString("Enter DxeIpl ...\n");\r
+  \r
 /*\r
   ClearScreen();\r
   PrintString("handoff:\n");\r
@@ -165,27 +169,31 @@ Returns:
   //   * Don't report FV as physical memory\r
   //   * MemoryAllocation Hob should only cover physical memory\r
   //   * Use ResourceDescriptor Hob to report physical memory or Firmware Device and they shouldn't be overlapped\r
-  \r
+  PrintString("Prepare Cpu HOB information ...\n");\r
   PrepareHobCpu ();\r
+\r
   //\r
   // 1. BFV\r
   //\r
+  PrintString("Prepare BFV HOB information ...\n");\r
   PrepareHobBfv (Handoff->BfvBase, Handoff->BfvSize);\r
 \r
   //\r
   // 2. Updates Memory information, and get the top free address under 4GB\r
   //\r
+  PrintString("Prepare Memory HOB information ...\n");\r
   MemoryTopOnDescriptor = PrepareHobMemory (Handoff->MemDescCount, Handoff->MemDesc);\r
-\r
+  \r
   //\r
   // 3. Put [NV], [Stack], [PageTable], [MemDesc], [HOB] just below the [top free address under 4GB]\r
   //\r
   \r
   //   3.1 NV data\r
+  PrintString("Prepare NV Storage information ...\n");\r
   NvStorageBase = PrepareHobNvStorage (MemoryTopOnDescriptor);\r
   AsciiSPrint (PrintBuffer, 256, "NV Storage Base=0x%x\n", (UINTN)NvStorageBase);\r
   PrintString (PrintBuffer);\r
-\r
+  \r
   //   3.2 Stack\r
   StackTop = NvStorageBase;\r
   StackBottom = PrepareHobStack (StackTop);\r
@@ -202,6 +210,7 @@ Returns:
   //\r
   // 4. Register the memory occupied by DxeCore and DxeIpl together as DxeCore\r
   //\r
+  PrintString("Prepare DxeCore memory Hob ...\n");\r
   PrepareHobDxeCore (\r
     Handoff->DxeCoreEntryPoint,\r
     (EFI_PHYSICAL_ADDRESS)(UINTN)Handoff->DxeCoreImageBase,\r
@@ -209,6 +218,7 @@ Returns:
     );\r
 \r
   PrepareHobLegacyTable (gHob);\r
+  \r
   PreparePpisNeededByDxeCore (gHob);\r
 \r
   CompleteHobGeneration ();\r
@@ -259,11 +269,44 @@ Returns:
   PrintString(" Length = ");\r
   PrintValue64(gHob->NvFtwFvb.FvbInfo.Entries[0].Length);\r
   PrintString("\n");\r
+  PrintString("BfvResource = ");\r
+  PrintValue64(gHob->BfvResource.PhysicalStart);\r
+  PrintString(" Length = ");\r
+  PrintValue64(gHob->BfvResource.ResourceLength);\r
+  PrintString("\n");\r
+  PrintString("NvStorageFvResource = ");\r
+  PrintValue64(gHob->NvStorageFvResource.PhysicalStart);\r
+  PrintString(" Length = ");\r
+  PrintValue64(gHob->NvStorageFvResource.ResourceLength);\r
+  PrintString("\n");\r
+  PrintString("NvStorage = ");\r
+  PrintValue64(gHob->NvStorage.FvbInfo.Entries[0].Base);\r
+  PrintString(" Length = ");\r
+  PrintValue64(gHob->NvStorage.FvbInfo.Entries[0].Length);\r
+  PrintString("\n");\r
+  PrintString("NvFtwFvResource = ");\r
+  PrintValue64(gHob->NvFtwFvResource.PhysicalStart);\r
+  PrintString(" Length = ");\r
+  PrintValue64(gHob->NvFtwFvResource.ResourceLength);\r
+  PrintString("\n");\r
+  PrintString("NvFtwWorking = ");\r
+  PrintValue64(gHob->NvFtwWorking.FvbInfo.Entries[0].Base);\r
+  PrintString(" Length = ");\r
+  PrintValue64(gHob->NvFtwWorking.FvbInfo.Entries[0].Length);\r
+  PrintString("\n");\r
+  PrintString("NvFtwSpare = ");\r
+  PrintValue64(gHob->NvFtwSpare.FvbInfo.Entries[0].Base);\r
+  PrintString(" Length = ");\r
+  PrintValue64(gHob->NvFtwSpare.FvbInfo.Entries[0].Length);\r
+  PrintString("\n");\r
   PrintString("Stack = ");   \r
   PrintValue64(gHob->Stack.AllocDescriptor.MemoryBaseAddress);\r
   PrintString(" StackLength = ");   \r
   PrintValue64(gHob->Stack.AllocDescriptor.MemoryLength);\r
   PrintString("\n");   \r
+  PrintString("PageTable = ");   \r
+  PrintValue64((UINTN)PageTableBase);\r
+  PrintString("\n");     \r
   PrintString("MemoryFreeUnder1MB = ");   \r
   PrintValue64(gHob->MemoryFreeUnder1MB.PhysicalStart);\r
   PrintString(" MemoryFreeUnder1MBLength = ");   \r
@@ -291,16 +334,26 @@ Returns:
   PrintString("\n");   \r
   EFI_DEADLOOP();\r
 */\r
+\r
   ClearScreen();\r
   PrintString("\n\n\n\n\n\n\n\n\n\n");\r
   PrintString("                         WELCOME TO EFI WORLD!\n");\r
-\r
   \r
   EnterDxeMain (StackTop, Handoff->DxeCoreEntryPoint, gHob, PageTableBase);\r
-\r
\r
+  PrintString("Fail to enter DXE main!\n");\r
   //\r
   // Should never get here\r
   //\r
   CpuDeadLoop ();\r
 }\r
 \r
+EFI_STATUS\r
+EFIAPI\r
+_ModuleEntryPoint (\r
+  IN EFILDRHANDOFF  *Handoff\r
+  )\r
+{\r
+  DxeInit(Handoff);\r
+  return EFI_SUCCESS;\r
+}\r