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 UINT16 *Buffer\r
)\r
{\r
+ ASSERT (Buffer != NULL);\r
+\r
return (UINT16)(((UINT8*)Buffer)[0] | (((UINT8*)Buffer)[1] << 8));\r
}\r
\r
IN UINT16 Value\r
)\r
{\r
+ ASSERT (Buffer != NULL);\r
+\r
((UINT8*)Buffer)[0] = (UINT8)Value;\r
((UINT8*)Buffer)[1] = (UINT8)(Value >> 8);\r
+\r
return Value;\r
}\r
\r
IN CONST UINT32 *Buffer\r
)\r
{\r
+ ASSERT (Buffer != NULL);\r
+\r
return (UINT32)(\r
ReadUnaligned16 ((UINT16*)Buffer) |\r
(((UINT8*)Buffer)[2] << 16)\r
IN UINT32 Value\r
)\r
{\r
+ ASSERT (Buffer != NULL);\r
+\r
WriteUnaligned16 ((UINT16*)Buffer, (UINT16)Value);\r
*(UINT8*)((UINT16*)Buffer + 1) = (UINT8)(Value >> 16);\r
return Value;\r
IN CONST UINT32 *Buffer\r
)\r
{\r
- return (UINT32)(\r
- ReadUnaligned16 ((UINT16*)Buffer) |\r
- (ReadUnaligned16 ((UINT16*)Buffer + 1) << 16)\r
- );\r
+ UINT16 LowerBytes;\r
+ UINT16 HigherBytes;\r
+\r
+ ASSERT (Buffer != NULL);\r
+\r
+ LowerBytes = ReadUnaligned16 ((UINT16*) Buffer);\r
+ HigherBytes = ReadUnaligned16 ((UINT16*) Buffer + 1);\r
+\r
+ return (UINT32) (LowerBytes | (HigherBytes << 16));\r
}\r
\r
/**\r
IN UINT32 Value\r
)\r
{\r
+ ASSERT (Buffer != NULL);\r
+\r
WriteUnaligned16 ((UINT16*)Buffer, (UINT16)Value);\r
WriteUnaligned16 ((UINT16*)Buffer + 1, (UINT16)(Value >> 16));\r
return Value;\r
IN CONST UINT64 *Buffer\r
)\r
{\r
- return (UINT64)(\r
- ReadUnaligned32 ((UINT32*)Buffer) |\r
- LShiftU64 (ReadUnaligned32 ((UINT32*)Buffer + 1), 32)\r
- );\r
+ UINT32 LowerBytes;\r
+ UINT32 HigherBytes;\r
+\r
+ ASSERT (Buffer != NULL);\r
+\r
+ LowerBytes = ReadUnaligned32 ((UINT32*) Buffer);\r
+ HigherBytes = ReadUnaligned32 ((UINT32*) Buffer + 1);\r
+\r
+ return (UINT64) (LowerBytes | LShiftU64 (HigherBytes, 32));\r
}\r
\r
/**\r
IN UINT64 Value\r
)\r
{\r
+ ASSERT (Buffer != NULL);\r
+\r
WriteUnaligned32 ((UINT32*)Buffer, (UINT32)Value);\r
WriteUnaligned32 ((UINT32*)Buffer + 1, (UINT32)RShiftU64 (Value, 32));\r
return Value;\r