From 8aeaf59524ad5d40b559b752c4a1cf78e0b8097b Mon Sep 17 00:00:00 2001 From: lgao4 Date: Wed, 21 Jun 2006 02:59:51 +0000 Subject: [PATCH] Fix bug in DxeMain module and EdkMemoryStatusCodeLib library. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@581 6f19259b-4bc3-4df7-8a09-765794883524 --- EdkModulePkg/Core/Dxe/Dispatcher/Dispatcher.c | 10 ++++++---- .../EdkMemoryStatusCodeLib/EdkMemoryStatusCodeLib.msa | 1 + .../Library/EdkMemoryStatusCodeLib/MemoryStatusCode.c | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/EdkModulePkg/Core/Dxe/Dispatcher/Dispatcher.c b/EdkModulePkg/Core/Dxe/Dispatcher/Dispatcher.c index fec794821b..82b776f901 100644 --- a/EdkModulePkg/Core/Dxe/Dispatcher/Dispatcher.c +++ b/EdkModulePkg/Core/Dxe/Dispatcher/Dispatcher.c @@ -1019,11 +1019,13 @@ Returns: if (gDxeCoreLoadedImage->FilePath == NULL) { if (CompareGuid (&NameGuid, gDxeCoreFileName)) { // - // Because mFvDevicePath has been initialized when discoveried - // EFI_FV_FILETYPE_DRIVER file. So only need to update the name - // guid of device path. + // Maybe One specail Fv cantains only one DXE_CORE module, so its device path must + // be initialized completely. // - CopyGuid (&mFvDevicePath.File.NameGuid, &NameGuid); + EfiInitializeFwVolDevicepathNode (&mFvDevicePath.File, &NameGuid); + mFvDevicePath.End.Type = EFI_END_ENTIRE_DEVICE_PATH; + mFvDevicePath.End.SubType = END_ENTIRE_DEVICE_PATH_SUBTYPE; + SetDevicePathNodeLength (&mFvDevicePath.End, sizeof (EFI_DEVICE_PATH_PROTOCOL)); gDxeCoreLoadedImage->FilePath = CoreDuplicateDevicePath ( (EFI_DEVICE_PATH_PROTOCOL *)&mFvDevicePath diff --git a/EdkModulePkg/Library/EdkMemoryStatusCodeLib/EdkMemoryStatusCodeLib.msa b/EdkModulePkg/Library/EdkMemoryStatusCodeLib/EdkMemoryStatusCodeLib.msa index 7d60671c90..ac6a6dd49e 100644 --- a/EdkModulePkg/Library/EdkMemoryStatusCodeLib/EdkMemoryStatusCodeLib.msa +++ b/EdkModulePkg/Library/EdkMemoryStatusCodeLib/EdkMemoryStatusCodeLib.msa @@ -39,6 +39,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. PeiServicesLib PeiServicesTablePointerLib BaseMemoryLib + PeimEntryPoint MemoryStatusCode.c diff --git a/EdkModulePkg/Library/EdkMemoryStatusCodeLib/MemoryStatusCode.c b/EdkModulePkg/Library/EdkMemoryStatusCodeLib/MemoryStatusCode.c index 087ef53aea..45a322b89d 100644 --- a/EdkModulePkg/Library/EdkMemoryStatusCodeLib/MemoryStatusCode.c +++ b/EdkModulePkg/Library/EdkMemoryStatusCodeLib/MemoryStatusCode.c @@ -486,7 +486,7 @@ Returns: #ifdef EFI_NT_EMULATOR gRunningFromMemory = TRUE; #else - * (BOOLEAN *) ((UINTN) &gRunningFromMemory + (UINTN) EntryPoint - (UINTN) InstallMonoStatusCode) = TRUE; + * (BOOLEAN *) ((UINTN) &gRunningFromMemory + (UINTN) EntryPoint - (UINTN) _ModuleEntryPoint) = TRUE; #endif Status = ((EFI_PEIM_ENTRY_POINT )(UINTN) EntryPoint) (PrivateData->FfsHeader, PeiServices); if (EFI_ERROR (Status)) { -- 2.39.2