[U-Boot] [PATCH] ARM: cfi_flash: Avoid generation of unaligned accesses
Marek Vasut
marek.vasut at gmail.com
Sun Apr 28 20:58:06 CEST 2013
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.
>
> Since fixing the code to use some other way of accessing those fields
> seems quite expensive, just force the compiler to use
> -mno-unaligned-access.
>
> Signed-off-by: Andrew Gabbasov <andrew_gabbasov at mentor.com>
> ---
> drivers/mtd/Makefile | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/mtd/Makefile b/drivers/mtd/Makefile
> index 543c845..a120f0b 100644
> --- a/drivers/mtd/Makefile
> +++ b/drivers/mtd/Makefile
> @@ -46,6 +46,9 @@ all: $(LIB)
> $(LIB): $(obj).depend $(OBJS)
> $(call cmd_link_o_target, $(OBJS))
>
> +# SEE README.arm-unaligned-accesses
> +$(obj)cfi_flash.o: CFLAGS += $(PLATFORM_NO_UNALIGNED)
> +
> #########################################################################
>
> # defines $(obj).depend target
I'd say rather fix the structure than use this workaround. See, using
u8[3]
u16
will make unaligned access. The fix would be to split that u16 into two u8 and
add a proper accessor. It'll be much larger effort, but it'd also be more
correct.
Best regards,
Marek Vasut
More information about the U-Boot
mailing list