Update module to pass in a valid EFI_HANDLE when is reloads and restarts itself using the PeCoffLib.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11364 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
mdkinney 2011-03-10 21:59:39 +00:00
parent d042c6e830
commit ca1677d839
1 changed files with 6 additions and 4 deletions

View File

@ -2,7 +2,7 @@
Implementation for S3 Boot Script Save thunk driver. Implementation for S3 Boot Script Save thunk driver.
This thunk driver consumes PI S3SaveState protocol to produce framework S3BootScriptSave Protocol This thunk driver consumes PI S3SaveState protocol to produce framework S3BootScriptSave Protocol
Copyright (c) 2010, Intel Corporation. All rights reserved.<BR> Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at which accompanies this distribution. The full text of the license may be found at
@ -803,6 +803,7 @@ InitializeScriptSaveOnS3SaveState (
VOID *DevicePath; VOID *DevicePath;
EFI_PHYSICAL_ADDRESS MemoryAddress; EFI_PHYSICAL_ADDRESS MemoryAddress;
UINTN PageNumber; UINTN PageNumber;
EFI_HANDLE NewImageHandle;
// //
// Test if the gEfiCallerIdGuid of this image is already installed. if not, the entry // Test if the gEfiCallerIdGuid of this image is already installed. if not, the entry
@ -817,11 +818,12 @@ InitializeScriptSaveOnS3SaveState (
// //
// A workarouond: Here we install a dummy handle // A workarouond: Here we install a dummy handle
// //
NewImageHandle = NULL;
Status = gBS->InstallProtocolInterface ( Status = gBS->InstallProtocolInterface (
&ImageHandle, &NewImageHandle,
&gEfiCallerIdGuid, &gEfiCallerIdGuid,
EFI_NATIVE_INTERFACE, EFI_NATIVE_INTERFACE,
DevicePath NULL
); );
Status = GetSectionFromAnyFv ( Status = GetSectionFromAnyFv (
@ -881,7 +883,7 @@ InitializeScriptSaveOnS3SaveState (
// Flush the instruction cache so the image data is written before we execute it // Flush the instruction cache so the image data is written before we execute it
// //
InvalidateInstructionCacheRange ((VOID *)(UINTN)ImageContext.ImageAddress, (UINTN)ImageContext.ImageSize); InvalidateInstructionCacheRange ((VOID *)(UINTN)ImageContext.ImageAddress, (UINTN)ImageContext.ImageSize);
Status = ((EFI_IMAGE_ENTRY_POINT)(UINTN)(ImageContext.EntryPoint)) ((EFI_HANDLE)(UINTN)(ImageContext.ImageAddress), SystemTable); Status = ((EFI_IMAGE_ENTRY_POINT)(UINTN)(ImageContext.EntryPoint)) (NewImageHandle, SystemTable);
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
gBS->FreePages (MemoryAddress, PageNumber); gBS->FreePages (MemoryAddress, PageNumber);
return Status; return Status;