mga_drv: fix image corruption due to memcpy reordering
The memcpy specification doesn't specify how the destination is written - and on glibc 2.19 memcpy is doing some bytewise writes with the rep stosb instruction. These bytewise writes confuse the hardware (because it expects 32-bit writes) and result in image corruption. This patch replaces memcpy with explicit writes, so that the sequential write order and 32-bit write size is guaranteed. We use the "volatile" attribute to make sure that compiler optimizations won't cause write reordering. When reading the memory, we use a structure with "packed" attribute to avoid unaligned traps on RISC machines. Tested-by:Kevin Brace <kevinbrace@gmx.com> Signed-off-by:
Mikulas Patocka <mikulas@twibright.com>
Loading
Please register or sign in to comment