THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
- Module Name: Unaligned.c\r
-\r
**/\r
\r
+\r
+#include <BaseLibInternals.h>\r
+\r
/**\r
Reads a 16-bit value from memory that may be unaligned.\r
\r
IN CONST UINT32 *Buffer\r
)\r
{\r
+ UINT16 LowerBytes;\r
+ UINT16 HigherBytes;\r
+\r
ASSERT (Buffer != NULL);\r
\r
- return (UINT32)(\r
- ReadUnaligned16 ((UINT16*)Buffer) |\r
- (ReadUnaligned16 ((UINT16*)Buffer + 1) << 16)\r
- );\r
+ LowerBytes = ReadUnaligned16 ((UINT16*) Buffer);\r
+ HigherBytes = ReadUnaligned16 ((UINT16*) Buffer + 1);\r
+\r
+ return (UINT32) (LowerBytes | (HigherBytes << 16));\r
}\r
\r
/**\r
IN CONST UINT64 *Buffer\r
)\r
{\r
+ UINT32 LowerBytes;\r
+ UINT32 HigherBytes;\r
+\r
ASSERT (Buffer != NULL);\r
\r
- return (UINT64)(\r
- ReadUnaligned32 ((UINT32*)Buffer) |\r
- LShiftU64 (ReadUnaligned32 ((UINT32*)Buffer + 1), 32)\r
- );\r
+ LowerBytes = ReadUnaligned32 ((UINT32*) Buffer);\r
+ HigherBytes = ReadUnaligned32 ((UINT32*) Buffer + 1);\r
+\r
+ return (UINT64) (LowerBytes | LShiftU64 (HigherBytes, 32));\r
}\r
\r
/**\r