On Aug 31, 2014, at 11:32 AM, Joel Sherrill <joel.sherr...@oarcorp.com> wrote:

>> Hi,
>> 
>> I am writing some code and found that system crashed. I found it was
>> unaligned access which causes `data abort` exception. I write a piece
>> of code and objdump
>> it. I am not sure this is right or not.
>> 
>> command:
>> arm-poky-linux-gnueabi-gcc -marm -mno-thumb-interwork -mabi=aapcs-linux
>> -mword-relocations -march=armv7-a -mno-unaligned-access
>> -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -msoft-float
>> -pipe  -O2 -c 2.c -o 2.o
>> 
>> arch is armv7-a and used '-mno-unaligned access'
> 
> I think this is totally expected. You were passed a u8 pointer which is 
> aligned for that type (no restrictions likely). You cast it to a type with 
> stricter alignment requirements. The code is just flawed. Some CPUs handle 
> unaligned accesses but not your ARM.

While armv7 and armv6 supports unaligned access, that support has to be 
enabled by the underlying O/S.  Not knowing the underlying environment, 
I can't say whether that support is enabled.  One issue we had in NetBSD
in moving to gcc4.8 was that the NetBSD/arm kernel didn't enable unaligned
access for armv[67] CPUs.  We quickly changed things so unaligned access
is supported.

Reply via email to