]> git.proxmox.com Git - mirror_edk2.git/blobdiff - DuetPkg/EfiLdr/TianoDecompress.c
BaseTools/BinToPcd: Fix Python 2.7.x compatibility issue
[mirror_edk2.git] / DuetPkg / EfiLdr / TianoDecompress.c
index df7efbd750d8114c05a7042fcb77229e116b4891..695f5162fcbf58a96d76d02a407cf5d9e36c99de 100644 (file)
@@ -1,7 +1,7 @@
 /*++\r
 \r
-Copyright (c) 2004 - 2006, Intel Corporation                                                         \r
-All rights reserved. This program and the accompanying materials                          \r
+Copyright (c) 2004 - 2006, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials                          \r
 are licensed and made available under the terms and conditions of the BSD License         \r
 which accompanies this distribution.  The full text of the license may be found at        \r
 http://opensource.org/licenses/bsd-license.php                                            \r
@@ -26,7 +26,6 @@ Abstract:
 #define MAXMATCH  256\r
 #define THRESHOLD 3\r
 #define CODE_BIT  16\r
-#define UINT8_MAX 0xff\r
 #define BAD_TABLE - 1\r
 \r
 //\r
@@ -74,7 +73,6 @@ typedef struct {
   UINT8   mPBit;\r
 } SCRATCH_DATA;\r
 \r
-STATIC\r
 VOID\r
 FillBuf (\r
   IN  SCRATCH_DATA  *Sd,\r
@@ -95,11 +93,11 @@ Returns: (VOID)
 \r
 --*/\r
 {\r
-  Sd->mBitBuf = (UINT32) (Sd->mBitBuf << NumOfBits);\r
+  Sd->mBitBuf = (UINT32) LShiftU64 (((UINT64)Sd->mBitBuf), NumOfBits);\r
 \r
   while (NumOfBits > Sd->mBitCount) {\r
-\r
-    Sd->mBitBuf |= (UINT32) (Sd->mSubBitBuf << (NumOfBits = (UINT16) (NumOfBits - Sd->mBitCount)));\r
+    NumOfBits = (UINT16) (NumOfBits - Sd->mBitCount);\r
+    Sd->mBitBuf |= (UINT32) LShiftU64 (((UINT64)Sd->mSubBitBuf), NumOfBits);\r
 \r
     if (Sd->mCompSize > 0) {\r
       //\r
@@ -124,7 +122,6 @@ Returns: (VOID)
   Sd->mBitBuf |= Sd->mSubBitBuf >> Sd->mBitCount;\r
 }\r
 \r
-STATIC\r
 UINT32\r
 GetBits (\r
   IN  SCRATCH_DATA  *Sd,\r
@@ -158,7 +155,6 @@ Returns:
   return OutBits;\r
 }\r
 \r
-STATIC\r
 UINT16\r
 MakeTable (\r
   IN  SCRATCH_DATA  *Sd,\r
@@ -193,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
@@ -210,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
@@ -226,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
@@ -288,7 +293,6 @@ Returns:
   return 0;\r
 }\r
 \r
-STATIC\r
 UINT32\r
 DecodeP (\r
   IN  SCRATCH_DATA  *Sd\r
@@ -342,7 +346,6 @@ Returns:
   return Pos;\r
 }\r
 \r
-STATIC\r
 UINT16\r
 ReadPTLen (\r
   IN  SCRATCH_DATA  *Sd,\r
@@ -372,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
@@ -384,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
@@ -415,11 +420,13 @@ 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
-STATIC\r
 VOID\r
 ReadCLen (\r
   SCRATCH_DATA  *Sd\r
@@ -440,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
@@ -448,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
@@ -502,14 +511,15 @@ 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
   return ;\r
 }\r
 \r
-STATIC\r
 UINT16\r
 DecodeC (\r
   SCRATCH_DATA  *Sd\r
@@ -575,7 +585,6 @@ Returns:
   return Index2;\r
 }\r
 \r
-STATIC\r
 VOID\r
 Decode (\r
   SCRATCH_DATA  *Sd\r
@@ -605,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
@@ -613,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
@@ -622,7 +631,7 @@ Returns: (VOID)
       //\r
       // Process a Pointer\r
       //\r
-      CharC       = (UINT16) (CharC - (UINT8_MAX + 1 - THRESHOLD));\r
+      CharC       = (UINT16) (CharC - (BIT8 - THRESHOLD));\r
 \r
       BytesRemain = CharC;\r
 \r
@@ -632,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
@@ -640,6 +649,7 @@ Returns: (VOID)
     }\r
   }\r
 \r
+Done:\r
   return ;\r
 }\r
 \r
@@ -665,7 +675,7 @@ Arguments:
 \r
 Returns:\r
 \r
-  EFI_SUCCESS           - The size of destination buffer and the size of scratch buffer are successull retrieved.\r
+  EFI_SUCCESS           - The size of destination buffer and the size of scratch buffer are successfully retrieved.\r
   EFI_INVALID_PARAMETER - The source data is corrupted\r
 \r
 --*/\r
@@ -724,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
@@ -759,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
@@ -831,7 +844,7 @@ Arguments:
 \r
 Returns:\r
 \r
-  EFI_SUCCESS           - The size of destination buffer and the size of scratch buffer are successull retrieved.\r
+  EFI_SUCCESS           - The size of destination buffer and the size of scratch buffer are successfully retrieved.\r
   EFI_INVALID_PARAMETER - The source data is corrupted\r
 \r
 --*/\r
@@ -915,7 +928,7 @@ Arguments:
 \r
 Returns:\r
 \r
-  EFI_SUCCESS           - The size of destination buffer and the size of scratch buffer are successull retrieved.\r
+  EFI_SUCCESS           - The size of destination buffer and the size of scratch buffer are successfully retrieved.\r
   EFI_INVALID_PARAMETER - The source data is corrupted\r
 \r
 --*/\r