]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/GenFds/Fd.py
Sync tool code to BuildTools project r1739.
[mirror_edk2.git] / BaseTools / Source / Python / GenFds / Fd.py
index 370008c91897191178404fd30a96e7e6704d8b50..26de500d9b6c59d30efed35fda1e9f8fab9946af 100644 (file)
@@ -65,6 +65,33 @@ class FD(FDClassObject):
         GenFdsGlobalVariable.VerboseLogger('################### Gen VTF ####################')\r
         self.GenVtfFile()\r
 \r
+        TempFdBuffer = StringIO.StringIO('')\r
+        PreviousRegionStart = -1\r
+        PreviousRegionSize = 1\r
+        \r
+        for RegionObj in self.RegionList :\r
+            if RegionObj.RegionType == 'CAPSULE':\r
+              continue\r
+            if RegionObj.Offset + RegionObj.Size <= PreviousRegionStart:\r
+              pass\r
+            elif RegionObj.Offset <= PreviousRegionStart or (RegionObj.Offset >=PreviousRegionStart and RegionObj.Offset < PreviousRegionStart + PreviousRegionSize):\r
+              pass\r
+            elif RegionObj.Offset > PreviousRegionStart + PreviousRegionSize:\r
+                GenFdsGlobalVariable.InfLogger('Padding region starting from offset 0x%X, with size 0x%X' %(PreviousRegionStart + PreviousRegionSize, RegionObj.Offset - (PreviousRegionStart + PreviousRegionSize)))\r
+                PadRegion = Region.Region()\r
+                PadRegion.Offset = PreviousRegionStart + PreviousRegionSize\r
+                PadRegion.Size = RegionObj.Offset - PadRegion.Offset\r
+                PadRegion.AddToBuffer(TempFdBuffer, self.BaseAddress, self.BlockSizeList, self.ErasePolarity, GenFds.ImageBinDict, self.vtfRawDict, self.DefineVarDict)\r
+            PreviousRegionStart = RegionObj.Offset\r
+            PreviousRegionSize = RegionObj.Size\r
+            #\r
+            # Call each region's AddToBuffer function\r
+            #\r
+            if PreviousRegionSize > self.Size:\r
+              pass\r
+            GenFdsGlobalVariable.VerboseLogger('Call each region\'s AddToBuffer function')\r
+            RegionObj.AddToBuffer (TempFdBuffer, self.BaseAddress, self.BlockSizeList, self.ErasePolarity, GenFds.ImageBinDict, self.vtfRawDict, self.DefineVarDict)\r
+        \r
         FdBuffer = StringIO.StringIO('')\r
         PreviousRegionStart = -1\r
         PreviousRegionSize = 1\r