]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Fix one bug in PeiExtractGuidedSectionLib to convert the address after hob start...
authorlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 18 Dec 2007 06:15:55 +0000 (06:15 +0000)
committerlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 18 Dec 2007 06:15:55 +0000 (06:15 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4398 6f19259b-4bc3-4df7-8a09-765794883524

MdePkg/Library/DxeMemoryAllocationLib/MemoryAllocationLib.c
MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.c

index 5a7ee4d170b71f4644746629ea0bbf35c7856361..3e04bb1cba1efc20e6f746e3594e5ec700e4f72a 100644 (file)
@@ -206,7 +206,7 @@ InternalAllocateAlignedPages (
       return NULL;\r
     }\r
     AlignedMemory  = ((UINTN) Memory + AlignmentMask) & ~AlignmentMask;\r
-    UnalignedPages = EFI_SIZE_TO_PAGES ((UINTN) Memory - AlignedMemory);\r
+    UnalignedPages = EFI_SIZE_TO_PAGES (AlignedMemory - (UINTN) Memory);\r
     if (UnalignedPages > 0) {\r
       //\r
       // Free first unaligned page(s).\r
index ce42a5dcd21cfcffe155cdf8624a6587e1630128..a360d59d852f7d39d2c7c2e4b73b9776a5ecee51 100644 (file)
@@ -63,6 +63,24 @@ PeiGetExtractGuidedSectionHandlerInfo (
     if (CompareGuid (&(Hob.Guid->Name), &gEfiCallerIdGuid)) {\r
       HandlerInfo = (PEI_EXTRACT_GUIDED_SECTION_HANDLER_INFO *) GET_GUID_HOB_DATA (Hob.Guid);\r
       if (HandlerInfo->Signature == PEI_EXTRACT_HANDLER_INFO_SIGNATURE) {\r
+        //\r
+        // Update Table Pointer when hob start address is changed.\r
+        //\r
+        if (HandlerInfo->ExtractHandlerGuidTable != (GUID *) (HandlerInfo + 1)) {\r
+          HandlerInfo->ExtractHandlerGuidTable    = (GUID *) (HandlerInfo + 1);\r
+          HandlerInfo->ExtractDecodeHandlerTable  = (EXTRACT_GUIDED_SECTION_DECODE_HANDLER *) (\r
+                                                      (UINT8 *)HandlerInfo->ExtractHandlerGuidTable + \r
+                                                      PcdGet32 (PcdMaximumGuidedExtractHandler) * sizeof (GUID)\r
+                                                     );\r
+          HandlerInfo->ExtractGetInfoHandlerTable = (EXTRACT_GUIDED_SECTION_GET_INFO_HANDLER *) (\r
+                                                      (UINT8 *)HandlerInfo->ExtractDecodeHandlerTable + \r
+                                                      PcdGet32 (PcdMaximumGuidedExtractHandler) * \r
+                                                      sizeof (EXTRACT_GUIDED_SECTION_GET_INFO_HANDLER)\r
+                                                     );\r
+        }\r
+        //\r
+        // Return HandlerInfo pointer.\r
+        //\r
         *InfoPointer = HandlerInfo;\r
         return EFI_SUCCESS;\r
       }\r
@@ -173,7 +191,7 @@ ExtractGuidedSectionRegisterHandlers (
   // Search the match registered GetInfo handler for the input guided section.\r
   //\r
   for (Index = 0; Index < HandlerInfo->NumberOfExtractHandler; Index ++) {\r
-    if (CompareGuid (&(HandlerInfo->ExtractHandlerGuidTable[Index]), SectionGuid)) {\r
+    if (CompareGuid (HandlerInfo->ExtractHandlerGuidTable + Index, SectionGuid)) {\r
       break;\r
     }\r
   }\r
@@ -197,7 +215,7 @@ ExtractGuidedSectionRegisterHandlers (
   //\r
   // Register new Handler and guid value.\r
   //\r
-  CopyGuid (&(HandlerInfo->ExtractHandlerGuidTable [HandlerInfo->NumberOfExtractHandler]), SectionGuid);\r
+  CopyGuid (HandlerInfo->ExtractHandlerGuidTable + HandlerInfo->NumberOfExtractHandler, SectionGuid);\r
   HandlerInfo->ExtractDecodeHandlerTable [HandlerInfo->NumberOfExtractHandler] = DecodeHandler;\r
   HandlerInfo->ExtractGetInfoHandlerTable [HandlerInfo->NumberOfExtractHandler++] = GetInfoHandler;\r
   \r
@@ -261,7 +279,7 @@ ExtractGuidedSectionGetInfo (
   // Search the match registered GetInfo handler for the input guided section.\r
   //\r
   for (Index = 0; Index < HandlerInfo->NumberOfExtractHandler; Index ++) {\r
-    if (CompareGuid (&(HandlerInfo->ExtractHandlerGuidTable[Index]), &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid))) {\r
+    if (CompareGuid (HandlerInfo->ExtractHandlerGuidTable + Index, &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid))) {\r
       break;\r
     }\r
   }\r
@@ -338,7 +356,7 @@ ExtractGuidedSectionDecode (
   // Search the match registered GetInfo handler for the input guided section.\r
   //\r
   for (Index = 0; Index < HandlerInfo->NumberOfExtractHandler; Index ++) {\r
-    if (CompareGuid (&(HandlerInfo->ExtractHandlerGuidTable[Index]), &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid))) {\r
+    if (CompareGuid (HandlerInfo->ExtractHandlerGuidTable + Index, &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid))) {\r
       break;\r
     }\r
   }\r