You copied the Doc URL to your clipboard.

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 LDR, LDRH, STR, STRH, LDRSH, LDRT, STRT, LDRSHT, LDRHT, STRHT, and TBH instructions. Other data-accessing instructions always cause an alignment exception for unaligned data.

For STRD and LDRD, the 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.

Was this page helpful? Yes No