/** @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
\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
\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
IN UINT32 Uint32\r
)\r
{\r
- UINTN Mask;\r
+ UINT32 Mask;\r
UINT32 SqRt;\r
UINT32 SqRtMask;\r
UINT32 Squared;\r
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
\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
UINTN Y1, Y2;\r
UINTN LineWidth, TriWidth, ScreenWidth;\r
UINTN TriHeight, ScreenHeight;\r
- UINTN 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
\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