[PATCH] ARM: decompressor: clear SCTLR.A bit for v7 cores
From: Nicolas Pitre <hidden>
Date: 2012-10-25 15:02:18
On Thu, 25 Oct 2012, Rob Herring wrote:
On 10/25/2012 09:16 AM, Johannes Stezenbach wrote:quoted
On Thu, Oct 25, 2012 at 07:41:45AM -0500, Rob Herring wrote:quoted
On 10/25/2012 04:34 AM, Johannes Stezenbach wrote:quoted
On Thu, Oct 11, 2012 at 07:43:22AM -0500, Rob Herring wrote:quoted
While v6 can support unaligned accesses, it is optional and current compilers won't emit unaligned accesses. So we don't clear the A bit for v6.not true according to the gcc changes pageWhat are you going to believe: documentation or what the compiler emitted? At least for ubuntu/linaro 4.6.3 which has the unaligned access support backported and 4.7.2, unaligned accesses are emitted for v7 only. I guess default here means it is the default unless you change the default in your build of gcc.Since ARMv6 can handle unaligned access in the same way as ARMv7 it seems a clear bug in gcc which might hopefully get fixed. Thus in this case I think it is reasonable to follow the gcc documentation, otherwise the code would break for ARMv6 when gcc gets fixed.But the compiler can't assume the state of the U bit. I think it is still legal on v6 to not support unaligned accesses, but on v7 it is required. All the standard v6 ARM cores support it, but I'm not sure about custom cores or if there are SOCs with buses that don't support unaligned accesses properly.
The fact is that gcc assumes the A bit is cleared when generating code for ARMv7, period. We need to conform our environment to gcc expectations, or always compile the decompressor using a lower architecture level than ARMv7. My preference is the former. Nicolas