return Status;\r
}\r
\r
-#define BOTH_ALIGNED(a, b, align) ((((UINTN)(a) | (UINTN)(b)) & ((align) - 1)) == 0)\r
-\r
-/**\r
- Copy Length bytes from Source to Destination, using aligned accesses only.\r
- Note that this implementation uses memcpy() semantics rather then memmove()\r
- semantics, i.e., SourceBuffer and DestinationBuffer should not overlap.\r
-\r
- @param DestinationBuffer The target of the copy request.\r
- @param SourceBuffer The place to copy from.\r
- @param Length The number of bytes to copy.\r
-\r
- @return Destination\r
-\r
-**/\r
-STATIC\r
-VOID *\r
-AlignedCopyMem (\r
- OUT VOID *DestinationBuffer,\r
- IN CONST VOID *SourceBuffer,\r
- IN UINTN Length\r
- )\r
-{\r
- UINT8 *Destination8;\r
- CONST UINT8 *Source8;\r
- UINT32 *Destination32;\r
- CONST UINT32 *Source32;\r
- UINT64 *Destination64;\r
- CONST UINT64 *Source64;\r
-\r
- if (BOTH_ALIGNED (DestinationBuffer, SourceBuffer, 8) && (Length >= 8)) {\r
- Destination64 = DestinationBuffer;\r
- Source64 = SourceBuffer;\r
- while (Length >= 8) {\r
- *Destination64++ = *Source64++;\r
- Length -= 8;\r
- }\r
-\r
- Destination8 = (UINT8 *)Destination64;\r
- Source8 = (CONST UINT8 *)Source64;\r
- } else if (BOTH_ALIGNED (DestinationBuffer, SourceBuffer, 4) && (Length >= 4)) {\r
- Destination32 = DestinationBuffer;\r
- Source32 = SourceBuffer;\r
- while (Length >= 4) {\r
- *Destination32++ = *Source32++;\r
- Length -= 4;\r
- }\r
-\r
- Destination8 = (UINT8 *)Destination32;\r
- Source8 = (CONST UINT8 *)Source32;\r
- } else {\r
- Destination8 = DestinationBuffer;\r
- Source8 = SourceBuffer;\r
- }\r
-\r
- while (Length-- != 0) {\r
- *Destination8++ = *Source8++;\r
- }\r
-\r
- return DestinationBuffer;\r
-}\r
-\r
EFI_STATUS\r
NorFlashReadBlocks (\r
IN NOR_FLASH_INSTANCE *Instance,\r
SEND_NOR_COMMAND (Instance->DeviceBaseAddress, 0, P30_CMD_READ_ARRAY);\r
\r
// Readout the data\r
- AlignedCopyMem (Buffer, (VOID *)StartAddress, BufferSizeInBytes);\r
+ CopyMem (Buffer, (VOID *)StartAddress, BufferSizeInBytes);\r
\r
return EFI_SUCCESS;\r
}\r
SEND_NOR_COMMAND (Instance->DeviceBaseAddress, 0, P30_CMD_READ_ARRAY);\r
\r
// Readout the data\r
- AlignedCopyMem (Buffer, (VOID *)(StartAddress + Offset), BufferSizeInBytes);\r
+ CopyMem (Buffer, (VOID *)(StartAddress + Offset), BufferSizeInBytes);\r
\r
return EFI_SUCCESS;\r
}\r
EfiGcdMemoryTypeMemoryMappedIo,\r
Instance->DeviceBaseAddress,\r
RuntimeMmioRegionSize,\r
- EFI_MEMORY_UC | EFI_MEMORY_RUNTIME\r
+ EFI_MEMORY_WC | EFI_MEMORY_RUNTIME\r
);\r
ASSERT_EFI_ERROR (Status);\r
\r
Status = gDS->SetMemorySpaceAttributes (\r
Instance->DeviceBaseAddress,\r
RuntimeMmioRegionSize,\r
- EFI_MEMORY_UC | EFI_MEMORY_RUNTIME\r
+ EFI_MEMORY_WC | EFI_MEMORY_RUNTIME\r
);\r
ASSERT_EFI_ERROR (Status);\r
\r