From e25803f0f0fcee1f3fa34dea67ca89ba1cada9dd Mon Sep 17 00:00:00 2001 From: klu2 Date: Tue, 6 Jan 2009 03:25:24 +0000 Subject: 1, Enable USB boot for R9's Duet. 2, Work around an RTC issue for DUET under vmware environment. 3, Enable early serial status code output for DxeCore module. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7187 6f19259b-4bc3-4df7-8a09-765794883524 --- DuetPkg/DxeIpl/DxeInit.c | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) (limited to 'DuetPkg/DxeIpl') diff --git a/DuetPkg/DxeIpl/DxeInit.c b/DuetPkg/DxeIpl/DxeInit.c index 6bc3170bc5..2f4e5b9f82 100644 --- a/DuetPkg/DxeIpl/DxeInit.c +++ b/DuetPkg/DxeIpl/DxeInit.c @@ -110,6 +110,19 @@ EnterDxeMain ( IN VOID *PageTable ); +VOID +WaitForKey () +{ + PrintString("Press Enter to continue ...\n"); + _asm { + mov al, 20h + out 64h, al + AGAIN: in al, 60h + cmp al, 1ch + jnz AGAIN + } +} + VOID DxeInit ( IN EFILDRHANDOFF *Handoff @@ -139,6 +152,7 @@ Returns: ClearScreen(); PrintString("Enter DxeIpl ...\n"); + /* ClearScreen(); PrintString("handoff:\n"); @@ -166,27 +180,31 @@ Returns: // * Don't report FV as physical memory // * MemoryAllocation Hob should only cover physical memory // * Use ResourceDescriptor Hob to report physical memory or Firmware Device and they shouldn't be overlapped - + PrintString("Prepare Cpu HOB information ...\n"); PrepareHobCpu (); + // // 1. BFV // + PrintString("Prepare BFV HOB information ...\n"); PrepareHobBfv (Handoff->BfvBase, Handoff->BfvSize); // // 2. Updates Memory information, and get the top free address under 4GB // + PrintString("Prepare Memory HOB information ...\n"); MemoryTopOnDescriptor = PrepareHobMemory (Handoff->MemDescCount, Handoff->MemDesc); - + // // 3. Put [NV], [Stack], [PageTable], [MemDesc], [HOB] just below the [top free address under 4GB] // // 3.1 NV data + PrintString("Prepare NV Storage information ...\n"); NvStorageBase = PrepareHobNvStorage (MemoryTopOnDescriptor); AsciiSPrint (PrintBuffer, 256, "NV Storage Base=0x%x\n", (UINTN)NvStorageBase); PrintString (PrintBuffer); - + // 3.2 Stack StackTop = NvStorageBase; StackBottom = PrepareHobStack (StackTop); @@ -203,6 +221,7 @@ Returns: // // 4. Register the memory occupied by DxeCore and DxeIpl together as DxeCore // + PrintString("Prepare DxeCore memory Hob ...\n"); PrepareHobDxeCore ( Handoff->DxeCoreEntryPoint, (EFI_PHYSICAL_ADDRESS)(UINTN)Handoff->DxeCoreImageBase, @@ -210,6 +229,7 @@ Returns: ); PrepareHobLegacyTable (gHob); + PreparePpisNeededByDxeCore (gHob); CompleteHobGeneration (); @@ -292,12 +312,14 @@ Returns: PrintString("\n"); EFI_DEADLOOP(); */ + WaitForKey (); ClearScreen(); PrintString("\n\n\n\n\n\n\n\n\n\n"); PrintString(" WELCOME TO EFI WORLD!\n"); - + EnterDxeMain (StackTop, Handoff->DxeCoreEntryPoint, gHob, PageTableBase); - + + PrintString("Fail to enter DXE main!\n"); // // Should never get here // -- cgit v1.2.3