]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OptionRomPkg/Application/BltLibSample/BltLibSample.c
OptionRomPkg: Removing ipf which is no longer supported from edk2.
[mirror_edk2.git] / OptionRomPkg / Application / BltLibSample / BltLibSample.c
index 24718131a48c2f3a87313a8138ed47ccc2abcc04..886314d63057d176d6c0748400b0bdbdc8a1c0ac 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Example program using BltLib\r
 \r
-  Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2018, 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
 #include <Library/UefiBootServicesTableLib.h>\r
 \r
 \r
+UINT64\r
+ReadTimestamp (\r
+  VOID\r
+  )\r
+{\r
+#if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64)\r
+  return AsmReadTsc ();\r
+#else\r
+#error ReadTimestamp not supported for this architecture!\r
+#endif\r
+}\r
+\r
 UINT32\r
 Rand32 (\r
   VOID\r
   )\r
 {\r
   UINTN    Found;\r
-  UINTN    Bits;\r
+  INTN     Bits;\r
   UINT64   Tsc1;\r
   UINT64   Tsc2;\r
   UINT64   TscBits;\r
@@ -34,16 +46,17 @@ Rand32 (
 \r
   R32 = 0;\r
   Found = 0;\r
-  Tsc1 = AsmReadTsc ();\r
-  Tsc2 = AsmReadTsc ();\r
+  Tsc1 = ReadTimestamp ();\r
+  Tsc2 = ReadTimestamp ();\r
   do {\r
-    Tsc2 = AsmReadTsc ();\r
+    Tsc2 = ReadTimestamp ();\r
     TscBits = Tsc2 ^ Tsc1;\r
     Bits = HighBitSet64 (TscBits);\r
     if (Bits > 0) {\r
       Bits = Bits - 1;\r
     }\r
-    R32 = (R32 << Bits) | RShiftU64 (LShiftU64 (TscBits, 64 - Bits), 64 - Bits);\r
+    R32 = (UINT32)((R32 << Bits) |\r
+                   RShiftU64 (LShiftU64 (TscBits, (UINTN) (64 - Bits)), (UINTN) (64 - Bits)));\r
     Found = Found + Bits;\r
   } while (Found < 32);\r
 \r
@@ -101,9 +114,9 @@ TestColor1 (
 \r
   for (Y = 0; Y < Height; Y++) {\r
     for (X = 0; X < Width; X++) {\r
-      Color.Red = ((X * 0x100) / Width);\r
-      Color.Green = ((Y * 0x100) / Height);\r
-      Color.Blue = ((Y * 0x100) / Height);\r
+      Color.Red =   (UINT8) ((X * 0x100) / Width);\r
+      Color.Green = (UINT8) ((Y * 0x100) / Height);\r
+      Color.Blue =  (UINT8) ((Y * 0x100) / Height);\r
       BltLibVideoFill (&Color, X, Y, 1, 1);\r
     }\r
   }\r
@@ -115,7 +128,7 @@ Uint32SqRt (
   IN  UINT32  Uint32\r
   )\r
 {\r
-  UINT Mask;\r
+  UINT32 Mask;\r
   UINT32 SqRt;\r
   UINT32 SqRtMask;\r
   UINT32 Squared;\r
@@ -124,7 +137,7 @@ Uint32SqRt (
     return 0;\r
   }\r
 \r
-  for (SqRt = 0, Mask = 1 << (HighBitSet32 (Uint32) / 2);\r
+  for (SqRt = 0, Mask = (UINT32) (1 << (HighBitSet32 (Uint32) / 2));\r
        Mask != 0;\r
        Mask = Mask >> 1\r
       ) {\r
@@ -146,20 +159,20 @@ Uint32SqRt (
 \r
 UINT32\r
 Uint32Dist (\r
-  IN UINT32 X,\r
-  IN UINT32 Y\r
+  IN UINTN X,\r
+  IN UINTN Y\r
   )\r
 {\r
-  return Uint32SqRt ((X * X) + (Y * Y));\r
+  return Uint32SqRt ((UINT32) ((X * X) + (Y * Y)));\r
 }\r
 \r
-UINT32\r
+UINT8\r
 GetTriColor (\r
-  IN UINT32 ColorDist,\r
-  IN UINT32 TriWidth\r
+  IN UINTN ColorDist,\r
+  IN UINTN TriWidth\r
   )\r
 {\r
-  return (((TriWidth - ColorDist) * 0x100) / TriWidth);\r
+  return (UINT8) (((TriWidth - ColorDist) * 0x100) / TriWidth);\r
   //return (((TriWidth * TriWidth - ColorDist * ColorDist) * 0x100) / (TriWidth * TriWidth));\r
 }\r
 \r
@@ -174,14 +187,20 @@ TestColor (
   UINTN                          Y1, Y2;\r
   UINTN                          LineWidth, TriWidth, ScreenWidth;\r
   UINTN                          TriHeight, ScreenHeight;\r
-  UINT                         ColorDist;\r
+  UINT32                         ColorDist;\r
 \r
   BltLibGetSizes (&ScreenWidth, &ScreenHeight);\r
   *(UINT32*) (&Color) = 0;\r
   BltLibVideoFill (&Color, 0, 0, ScreenWidth, ScreenHeight);\r
 \r
-  TriWidth = DivU64x32 (MultU64x32 (11547005, ScreenHeight), 10000000);\r
-  TriHeight = DivU64x32 (MultU64x32 (8660254, ScreenWidth), 10000000);\r
+  TriWidth = (UINTN) DivU64x32 (\r
+                       MultU64x32 (11547005, (UINT32) ScreenHeight),\r
+                       10000000\r
+                       );\r
+  TriHeight = (UINTN) DivU64x32 (\r
+                        MultU64x32 (8660254, (UINT32) ScreenWidth),\r
+                        10000000\r
+                        );\r
   if (TriWidth > ScreenWidth) {\r
     DEBUG ((EFI_D_INFO, "TriWidth at %d was too big\n", TriWidth));\r
     TriWidth = ScreenWidth;\r
@@ -200,10 +219,10 @@ TestColor (
 \r
   for (Y = Y2; Y <= Y1; Y++) {\r
     LineWidth =\r
-      DivU64x32 (\r
-        MultU64x32 (11547005, (Y - Y2)),\r
-        20000000\r
-        );\r
+      (UINTN) DivU64x32 (\r
+                MultU64x32 (11547005, (UINT32) (Y - Y2)),\r
+                20000000\r
+                );\r
     for (X = X2 - LineWidth; X < (X2 + LineWidth); X++) {\r
       ColorDist = Uint32Dist(X - X1, Y1 - Y);\r
       Color.Red = GetTriColor (ColorDist, TriWidth);\r