
Hi Marek,
From: Marek Vasut [marex@denx.de] Sent: Wednesday, May 08, 2013 21:26 To: u-boot@lists.denx.de Cc: Gabbasov, Andrew; Tom Rini; Albert Aribaud Subject: Re: [U-Boot] [PATCH] ARM: cfi_flash: Fix unaligned accesses to cfi_qry structure
Dear Andrew Gabbasov,
Packed structure cfi_qry contains unaligned 16- and 32-bits members, accessing which causes problems when cfi_flash driver is compiled with -munaligned-access option: flash initialization hangs, probably due to data error.
This fix converts 16- and 32-bit members to byte arrays and uses special macros to access such fields. It removes possible unaligned accesses in cfi_flash driver.
Signed-off-by: Andrew Gabbasov andrew_gabbasov@mentor.com
It seems OK. I just wonder if the le16_to_cpu you removed can have no impact now on obscure-endian architectures, that's my only concern.
Best regards, Marek Vasut
Thank you for your feedback.
Using le16_to_cpu macros assumed that the data, read from flash, are always in little-endian order, that is the LSB byte comes first in those 2-bytes unaligned fields. This is exactly how the data is read by new macros. So, it looks like new macros should work on any host endianness.
Thanks.
Best regards, Andrew