
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@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