Line 3: | Line 3: | ||
== Overview == | == Overview == | ||
− | In the first few versions of [[ARM]], the [[Program Counter]] was | + | In the first few versions of [[ARM]], the [[Program Counter]] was 24 bits allowing for a 26-bit address space of up to 64 MiB of memory. The other bits were used for the {{arm|Processor Status Register}}. With the introduction of the {{arm|ARMv3}}, the ISA moved to a full 32-bit address space. ARMv3 consequently introduced a compatibility mode to support the older architectures (except for {{arm|ARMv3G}}). With the introduction of {{arm|ARMv4}}, the mode became optional on all non-T variants. {{arm|ARMv5}} dropped 26-bit compatibility entirely. |
=== Major Differences === | === Major Differences === |
Latest revision as of 08:13, 18 February 2021
ARM ISA | |
General | |
Variants | |
Extensions | |
Topics | |
Versions(all) | |
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.
Contents
Overview[edit]
In the first few versions of ARM, the Program Counter was 24 bits allowing for a 26-bit address space of up to 64 MiB of memory. The other bits were 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[edit]
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 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).
31 30 29 28 27 26 25 2 1 0 N Z C V I F Program Counter M1 M0
- R15[25:2] = Program Counter (PC)
- R15[31:26], R15[1:0] = Program Status Register (PSR)
26-bit ARM Architectures and implementations[edit]
- 26-bit ARM ISAs are known as ARMv1, ARMv2, and ARMv2a
- Implementations: ARM1, ARM2, ARM3, and the ARM250.
Compatibility Mode[edit]
This section is empty; you can help add the missing info by editing this page. |