]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Fix bugs in decompress implement in EfiLdr, and enable FAT driver in FDF file.
authorklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 13 Jan 2009 07:41:23 +0000 (07:41 +0000)
committerklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 13 Jan 2009 07:41:23 +0000 (07:41 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7254 6f19259b-4bc3-4df7-8a09-765794883524

DuetPkg/DuetPkg.fdf
DuetPkg/EfiLdr/EfiLoader.c
DuetPkg/EfiLdr/TianoDecompress.c

index 9072d9823704519cbb484f9cd9361e722203391a..35d9a045f68290e575c163fd6cc1d1ee4b87b587 100644 (file)
@@ -61,10 +61,6 @@ READ_STATUS        = TRUE
 READ_LOCK_CAP      = TRUE\r
 READ_LOCK_STATUS   = TRUE\r
 \r
-APRIORI DXE {\r
-  INF  IntelFrameworkModulePkg/Universal/StatusCode/Dxe/DxeStatusCode.inf\r
-  }\r
-\r
 INF  MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf\r
 INF  MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf\r
 INF  MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf\r
@@ -73,7 +69,6 @@ INF  DuetPkg/FSVariable/FSVariable.inf
 INF  MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf\r
 INF  MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf\r
 INF  MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf\r
-INF  IntelFrameworkModulePkg/Universal/StatusCode/Dxe/DxeStatusCode.inf\r
 INF  MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf\r
 INF  MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf\r
 INF  MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf\r
@@ -101,28 +96,28 @@ INF  IntelFrameworkModulePkg/Bus/Pci/VgaMiniPortDxe/VgaMiniPortDxe.inf
 INF  IntelFrameworkModulePkg/Universal/Console/VgaClassDxe/VgaClassDxe.inf\r
 \r
   # IDE Support\r
-  #IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/IdeBusDxe.inf\r
+#IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/IdeBusDxe.inf\r
   \r
   # Usb Support\r
-INF  MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf\r
-INF  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf\r
-INF  MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf\r
-INF  MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf\r
+#INF  MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf\r
+#INF  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf\r
+#INF  MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf\r
+#INF  MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf\r
   \r
   # ISA Support\r
 INF  DuetPkg/IsaAcpiDxe/IsaAcpi.inf\r
 INF  IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf\r
 INF  IntelFrameworkModulePkg/Bus/Isa/IsaSerialDxe/IsaSerialDxe.inf\r
-#INF  IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2keyboardDxe.inf\r
+INF  IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2keyboardDxe.inf\r
 INF  IntelFrameworkModulePkg/Bus/Isa/IsaFloppyDxe/IsaFloppyDxe.inf\r
 \r
-#INF  MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf\r
-#INF  MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf\r
-#INF  MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf\r
+INF  MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf\r
+INF  MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf\r
+INF  MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf\r
 \r
-#FILE DRIVER = 961578FE-B6B7-44c3-AF35-6BC705CD2B1F {\r
-#  SECTION PE32 = FatBinPkg/EnhancedFatDxe/Ia32/Fat.efi\r
-#  }\r
+FILE DRIVER = 961578FE-B6B7-44c3-AF35-6BC705CD2B1F {\r
+  SECTION PE32 = FatBinPkg/EnhancedFatDxe/Ia32/Fat.efi\r
+  }\r
 \r
 [Rule.Common.PEI_CORE]\r
   FILE PEI_CORE = $(NAMED_GUID) {\r
index 6f214d2930b200ffd16fb863aba5ae2b4fbbeb35..f9804e7ffb35edb12757aa5aa2ddb0619d485464 100644 (file)
@@ -109,7 +109,11 @@ EfiLoader (
     PrintString (PrintBuffer);\r
     SystemHang();\r
   }\r
-\r
+  \r
+  AsciiSPrint (PrintBuffer, 256, "BFV decompress: DestinationSize=0x%X, ScratchSize=0x%X!\n",\r
+               DestinationSize, ScratchSize);\r
+  PrintString (PrintBuffer);\r
+  \r
   Status = TianoDecompress (\r
              (VOID *)(UINTN)(EFILDR_HEADER_ADDRESS + EFILDRImage->Offset),\r
              EFILDRImage->Length,\r
index f2f37bd44849281fee88f2478a461b37288fd2c9..d326805c28e573e3af09db65059ef6bb6c646f3c 100644 (file)
@@ -189,15 +189,19 @@ Returns:
   UINT16  Start[18];\r
   UINT16  *Pointer;\r
   UINT16  Index3;\r
-  UINT16  Index;\r
+  volatile UINT16  Index;\r
   UINT16  Len;\r
   UINT16  Char;\r
   UINT16  JuBits;\r
   UINT16  Avail;\r
   UINT16  NextCode;\r
   UINT16  Mask;\r
+  UINT16  WordOfStart;\r
+  UINT16  WordOfCount;\r
 \r
-  SetMem (&Count[1], sizeof(UINT16) * 16, 0);\r
+  for (Index = 1; Index <= 16; Index++) {\r
+    Count[Index] = 0;\r
+  }  \r
 \r
   for (Index = 0; Index < NumOfChar; Index++) {\r
     Count[BitLen[Index]]++;\r
@@ -206,7 +210,9 @@ Returns:
   Start[1] = 0;\r
 \r
   for (Index = 1; Index <= 16; Index++) {\r
-    Start[Index + 1] = (UINT16) (Start[Index] + (Count[Index] << (16 - Index)));\r
+    WordOfStart = Start[Index];\r
+    WordOfCount = Count[Index];\r
+    Start[Index + 1] = (UINT16) (WordOfStart + (WordOfCount << (16 - Index)));\r
   }\r
 \r
   if (Start[17] != 0) {\r
@@ -222,14 +228,17 @@ Returns:
   }\r
 \r
   while (Index <= 16) {\r
-    Weight[Index++] = (UINT16) (1U << (16 - Index));\r
+    Weight[Index] = (UINT16) (1U << (16 - Index));\r
+    Index++;\r
   }\r
 \r
   Index = (UINT16) (Start[TableBits + 1] >> JuBits);\r
 \r
   if (Index != 0) {\r
     Index3 = (UINT16) (1U << TableBits);\r
-    SetMem(&Table[Index], sizeof(UINT16) * (Index3 - Index + 1), 0);\r
+    while (Index != Index3) {\r
+      Table[Index++] = 0;\r
+    }\r
   }\r
 \r
   Avail = NumOfChar;\r
@@ -366,7 +375,7 @@ Returns:
 {\r
   UINT16  Number;\r
   UINT16  CharC;\r
-  UINT16  Index;\r
+  volatile UINT16  Index;\r
   UINT32  Mask;\r
 \r
   Number = (UINT16) GetBits (Sd, nbit);\r
@@ -378,7 +387,9 @@ Returns:
       Sd->mPTTable[Index] = CharC;\r
     }\r
 \r
-    SetMem ((VOID*) &Sd->mPTLen, nn * sizeof(UINT8), 0);\r
+    for (Index = 0; Index < nn; Index++) {\r
+      Sd->mPTLen[Index] = 0;\r
+    }\r
 \r
     return 0;\r
   }\r
@@ -409,7 +420,10 @@ Returns:
     }\r
   }\r
 \r
-  SetMem ((VOID*) &Sd->mPTLen[Index], (nn - Index) * sizeof(UINT8), 0);\r
+  while (Index < nn) {\r
+    Sd->mPTLen[Index++] = 0;\r
+  }\r
+\r
   return MakeTable (Sd, nn, Sd->mPTLen, 8, Sd->mPTTable);\r
 }\r
 \r
@@ -433,7 +447,7 @@ Returns: (VOID)
 {\r
   UINT16  Number;\r
   UINT16  CharC;\r
-  UINT16  Index;\r
+  volatile UINT16  Index;\r
   UINT32  Mask;\r
 \r
   Number = (UINT16) GetBits (Sd, CBIT);\r
@@ -441,7 +455,9 @@ Returns: (VOID)
   if (Number == 0) {\r
     CharC = (UINT16) GetBits (Sd, CBIT);\r
 \r
-    SetMem ((VOID*)&Sd->mCLen, sizeof(UINT8) * NC, 0);\r
+    for (Index = 0; Index < NC; Index++) {\r
+      Sd->mCLen[Index] = 0;\r
+    }\r
 \r
     for (Index = 0; Index < 4096; Index++) {\r
       Sd->mCTable[Index] = CharC;\r
@@ -495,7 +511,9 @@ Returns: (VOID)
     }\r
   }\r
 \r
-  SetMem ((VOID*) &Sd->mCLen[Index], sizeof(UINT8) * (NC - Index), 0);\r
+  while (Index < NC) {\r
+    Sd->mCLen[Index++] = 0;\r
+  }\r
 \r
   MakeTable (Sd, NC, Sd->mCLen, 12, Sd->mCTable);\r
 \r
@@ -596,7 +614,7 @@ Returns: (VOID)
   for (;;) {\r
     CharC = DecodeC (Sd);\r
     if (Sd->mBadTableFlag != 0) {\r
-      return ;\r
+      goto Done ;\r
     }\r
 \r
     if (CharC < 256) {\r
@@ -604,7 +622,7 @@ Returns: (VOID)
       // Process an Original character\r
       //\r
       if (Sd->mOutBuf >= Sd->mOrigSize) {\r
-        return ;\r
+        goto Done ;\r
       } else {\r
         Sd->mDstBase[Sd->mOutBuf++] = (UINT8) CharC;\r
       }\r
@@ -623,7 +641,7 @@ Returns: (VOID)
       while ((INT16) (BytesRemain) >= 0) {\r
         Sd->mDstBase[Sd->mOutBuf++] = Sd->mDstBase[DataIdx++];\r
         if (Sd->mOutBuf >= Sd->mOrigSize) {\r
-          return ;\r
+          goto Done ;\r
         }\r
 \r
         BytesRemain--;\r
@@ -631,6 +649,8 @@ Returns: (VOID)
     }\r
   }\r
 \r
+Done:\r
+  return ;\r
 }\r
 \r
 EFI_STATUS\r
@@ -714,7 +734,8 @@ Returns:
   SCRATCH_DATA  *Sd;\r
   UINT8         *Src;\r
   UINT8         *Dst;\r
-\r
+  volatile UINT32  Index;\r
+  \r
   Status  = EFI_SUCCESS;\r
   Src     = Source;\r
   Dst     = Destination;\r
@@ -749,8 +770,10 @@ Returns:
 \r
   Src = Src + 8;\r
 \r
-  SetMem ((VOID*) Sd, sizeof(SCRATCH_DATA), 0);\r
-\r
+  for (Index = 0; Index < sizeof (SCRATCH_DATA); Index++) {\r
+    ((UINT8 *) Sd)[Index] = 0;\r
+  }\r
+  \r
   //\r
   // The length of the field 'Position Set Code Length Array Size' in Block Header.\r
   // For EFI 1.1 de/compression algorithm(Version 1), mPBit = 4\r