
Dear Albert and Måns,
-----Original Message----- From: Måns Rullgård [mailto:mans@mansr.com] Sent: Monday, October 14, 2013 3:05 PM To: Albert ARIBAUD Cc: Piotr Wilczek; 'Tom Rini'; u-boot@lists.denx.de; 'Kyungmin Park' Subject: Re: [U-Boot] [PATCH] disk:efi: avoid unaligned access on efi partition
Albert ARIBAUD albert.u.boot@aribaud.net writes:
Please do not advise using native unaligned accesses on code that is not strictly used by ARMv6+ architectures: the present code,
for
instance, might be run on pre-ARMv6 or non-ARM platforms, and
thus,
should never assume ability to perform unaligned accesses
natively.
I'm advising no such thing. I said two things:
- Declaring a struct with the 'packed' attribute makes gcc automatically generate correct code for all targets. _IF_ the selected target supports unaligned ldr/str, these might get
used.
- If your target is ARMv6 or later _AND_ you enable strict
alignment
checking in the system control register, you _MUST_ build with
the
-mno-unaligned-access flag.
Then I apologize; I had read "Note that on ARMv6 and later ldr/str support unaligned addresses unless this is explicitly disabled in the system control register" as a suggestion to use that capability.
If building for ARMv6 or later, I do suggest allowing unaligned accesses. The moment you add -march=armv6 (or equivalent), you allow for a number of things not supported by older versions, so why not unaligned memory accesses?
Thank you for your comments, I will follow your advice.
Best regards Piotr Wilczek
-- Måns Rullgård mans@mansr.com