4.5.1. Word-invariant fixed instruction and data endianness

Prior to ARMv6 the endianness of both instructions and data are locked together, and the configuration of the processor and the external memory system must either be hard-wired or programmed in the first few instructions of the bootstrap code.

Where the endianness is configurable under program control, the MMU provides a mechanism in CP15 c1 to set the B bit, which enables byte addressing renaming with 32-bit words. This model of big-endian access, called BE-32 in this document, relies on a word-invariant view of memory where an aligned 32-bit word reads and writes the same word of data in memory when configured as either big-endian or little-endian. This enables an ARM 32-bit instruction sequence to be executed to program the B bit, but no byte or halfword data accesses or 16-bit Thumb instructions can be used until the processor configuration matches the system endianness.

This behavior is still provided for software when the U bit in CP15 Register c1 is zero. Table 4.4 shows this.

Table 4.4. Word-invariant endianness using CP15 c1

UBInstruction endiannessData endiannessDescription
00LELELE (reset condition)
01BE-32BE-32BE (32-bit word-invariant)
Copyright © 2002-2006 ARM Limited. All rights reserved.ARM DDI 0211I
Non-Confidential