]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ECP package BootScriptSaveOnS3SaveStateThunk driver needs to support framework 32bit...
authorlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 7 Mar 2011 02:23:00 +0000 (02:23 +0000)
committerlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 7 Mar 2011 02:23:00 +0000 (02:23 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11349 6f19259b-4bc3-4df7-8a09-765794883524

EdkCompatibilityPkg/Compatibility/BootScriptSaveOnS3SaveStateThunk/ScriptSave.c

index 9a4119b318acf770d65ba31c9bd7d5149c19628a..7248e2e860c3aa9baa518bd9cc49c2d3d29224a4 100644 (file)
@@ -797,11 +797,12 @@ InitializeScriptSaveOnS3SaveState (
 {\r
   UINT8                                         *Buffer;\r
   UINTN                                         BufferSize;\r
-  VOID                                          *FfsBuffer;\r
   PE_COFF_LOADER_IMAGE_CONTEXT                  ImageContext;\r
   BOOT_SCRIPT_THUNK_DATA                        *BootScriptThunkData;\r
   EFI_STATUS                                    Status;\r
   VOID                                          *DevicePath;\r
+  EFI_PHYSICAL_ADDRESS                          MemoryAddress;\r
+  UINTN                                         PageNumber;\r
 \r
   //\r
   // Test if the gEfiCallerIdGuid of this image is already installed. if not, the entry\r
@@ -839,15 +840,19 @@ InitializeScriptSaveOnS3SaveState (
     if (EFI_ERROR (Status)) {\r
       return Status;\r
     }\r
-    Status = gBS->AllocatePool (\r
-                    EfiACPIMemoryNVS,\r
-                    BufferSize + ImageContext.SectionAlignment,\r
-                    &FfsBuffer\r
-                    );\r
+\r
+    MemoryAddress = SIZE_4GB - 1;\r
+    PageNumber    = EFI_SIZE_TO_PAGES (BufferSize + ImageContext.SectionAlignment);\r
+    Status  = gBS->AllocatePages (\r
+                     AllocateMaxAddress,\r
+                     EfiACPIMemoryNVS,\r
+                     PageNumber,\r
+                     &MemoryAddress\r
+                     );\r
     if (EFI_ERROR (Status)) {\r
       return EFI_OUT_OF_RESOURCES;\r
     }\r
-    ImageContext.ImageAddress = (PHYSICAL_ADDRESS)(UINTN)FfsBuffer;\r
+    ImageContext.ImageAddress = (PHYSICAL_ADDRESS)(UINTN)MemoryAddress;\r
     //\r
     // Align buffer on section boundry\r
     //\r
@@ -858,7 +863,7 @@ InitializeScriptSaveOnS3SaveState (
     //\r
     Status = PeCoffLoaderLoadImage (&ImageContext);\r
     if (EFI_ERROR (Status)) {\r
-      gBS->FreePool (FfsBuffer);\r
+      gBS->FreePages (MemoryAddress, PageNumber);\r
       return Status;\r
     }\r
 \r
@@ -869,7 +874,7 @@ InitializeScriptSaveOnS3SaveState (
 \r
     if (EFI_ERROR (Status)) {\r
       PeCoffLoaderUnloadImage (&ImageContext);\r
-      gBS->FreePool (FfsBuffer);\r
+      gBS->FreePages (MemoryAddress, PageNumber);\r
       return Status;\r
     }\r
     //\r
@@ -878,7 +883,7 @@ InitializeScriptSaveOnS3SaveState (
     InvalidateInstructionCacheRange ((VOID *)(UINTN)ImageContext.ImageAddress, (UINTN)ImageContext.ImageSize);\r
     Status = ((EFI_IMAGE_ENTRY_POINT)(UINTN)(ImageContext.EntryPoint)) ((EFI_HANDLE)(UINTN)(ImageContext.ImageAddress), SystemTable);\r
     if (EFI_ERROR (Status)) {\r
-      gBS->FreePool (FfsBuffer);\r
+      gBS->FreePages (MemoryAddress, PageNumber);\r
       return Status;\r
     }\r
     //\r