Address alignment in A32/T32 code
In Arm®v7‑A, Armv7‑R, Armv8‑A, and Armv8‑R, the A bit in the System Control Register (SCTLR) controls whether alignment checking is enabled or disabled. In Armv7‑M and Armv8‑M, the
UNALIGN_TRP bit, bit 3, in the Configuration and Control Register (CCR) controls the alignment checking.
If alignment checking is enabled, all unaligned word and halfword
transfers cause an alignment exception. If disabled, unaligned accesses
are permitted for the
TBH instructions. Other data-accessing instructions
always cause an alignment exception for unaligned data.
specified address must be word-aligned.
If all your data accesses are aligned, you can use the
--no_unaligned_access command-line option to declare that the output object was not permitted to make unaligned access. If all input objects declare that they are not permitted to use unaligned accesses, then the linker can avoid linking in any library functions that support unaligned access.