From WikiChip
26-bit architectures - ARM
< arm
Revision as of 09:08, 18 February 2021 by (talk)

v · d · e

ARM 26-bit architectures refers to a number of early ARM ISA versions and implementations that only implement a 26-bit address space. Those architectures have been long obsolete and are no longer supported or implemented.


In the first few versions of ARM, the Program Counter was only 26 bits, allowing it to access 64 MiB of memory. The other 6 bits were actually used for the Processor Status Register. With the introduction of the ARMv3, the ISA moved to a full 32-bit address space. ARMv3 consequently introduced a compatibility mode to support the older architectures (except for ARMv3G). With the introduction of ARMv4, the mode became optional on all non-T variants. ARMv5 dropped 26-bit compatibility entirely.

Major Differences

The most major difference is in the Program Counter which only implements a 24-bit program counter in R15. This allows for an address space of only up to 64 MiB (note that all instructions are Word-aligned, therefore the two low bits are always zero; 224 << 2). Any memory access attempt beyond the Equation 2 Superscript 26 Baseline minus 1 byte will raise a memory access exception. On the 32-bit architectures, the program counter was extended to 30 bits, allowing the full 4 GiB address space to be accessible. Because addresses are only 26 bits there were no restrictions on branches wrapping around either past 0x3FFFFFF or backwards past 0x0000000. This would lead to 26-bit architectures having different target address than they would on a 32-bit ARM architecture. Consequently, B and BL signed 24-bit offsets can branch to any address.

The 26-bit architectures do not have a CPSR or any SPSRs. and only the four original modes are supported: User, FIQ, IRQ, and Supervisor. The remaining bits in the program counter are used for the condition flags (N, Z, C, and V), interrupt disable flags (I and F), and the two processor mode bits (M1 and M0). This had the effect of being able to save the process status across subroutine calls and without adding any additional instructions or overhead (e.g. special entry and exit sequence).

31302928272625     210
NZCVIFProgram CounterM1M0
  • R15[25:2] = Program Counter (PC)
  • R15[31:26], R15[1:0] = Program Status Register (PSR)

26-bit ARM Architectures and implementations

Compatibility Mode

New text document.svg This section is empty; you can help add the missing info by editing this page.