ARM Architecture Reference Manual for ARMv8-A (64-bit) publicly released

This blog was originally posted on 11 September 2013 on

Following on from the UEFI 64-bit announcement, I like to announce the release of the ARM® Architecture Reference Manual (commonly known as the ARM ARM) for ARMv8-A. This is a significant event that has important implications for the software community. It enables the software eco-system to develop openly for 64-bit ARM applications, compilers, boot firmware and Operating Systems. I believe this will add impetus to the ARM ecosystem, through 64-bit software support, to continue the increasing momentum evident in the many servers & high performance computing, networking and general computing (including mobile and embedded) developments based on the ARMv8-A architecture.

Why develop ARMv8-A?

We started developing ARMv8-A over six years ago as an R&D project, with a major increase in effort in 2009. Technology trends and growing needs for larger memory footprints made it obvious that ARM would need a 64-bit solution; it was only a matter of time… This in turn created interest in new markets for ARM. For example, some server class Operating Systems declared that they were going to be 64-bit only.

What does the latest ARM ARM include?

It describes the registers, instructions, instruction encodings, exception model, virtual memory model (including cache support) and memory management, as well as the debug architecture. At a high level, ARMv8-A describes both a 32-bit and 64-bit architecture, respectively called AArch32 and AArch64.

  • AArch32 is the ARMv8-A 32-bit execution state, that uses 32-bit general purpose registers, a 32-bit program counter (PC), stack pointer (SP), and link register (LR). AArch32 execution state provides a choice of two instruction sets, A32 (ARM) and T32 (Thumb2). Operation in AArch32 state is compatible with ARMv7-A operation.
  • AArch64 the ARMv8-A 64-bit execution state, that uses 64-bit general purpose registers, and a 64-bit program counter (PC), stack pointer (SP), and exception link registers (ELR). AArch64 execution state provides a single instruction set, A64.

I strongly recommend if you are interested in porting and developing software for ARM application processors that you get hold of the ARM ARM for ARMv8-A and download an ARM Foundation Model. The ARM Foundation Model is a software platform to start early development – this snippet below is taken from the ARM web site:

  • The ARMv8 Foundation Model is a virtual platform incorporating an AArch64 architecture simulation model along with essential peripherals for running a Linux operating system. Multicore is configurable out-of-the-box, along with 4GB memory of simulation memory, persistent storage, and networking and basic instruction trace.
  • Debug is via a GDB connection to a server running on the platform. The host platform support is 64-bit Linux.

How to obtain the ARMv8-A Reference Manual?

Go to ARM Infocenter and navigate through ARM architecture / Reference Manuals


The ARM ARM for ARMv8-A is now publicly released. It allows the software community to openly develop 64-bit ARM software. This is a significant event for the entire ARM eco-system.

Note: Information previously published in an AArch64 Instruction set Overview document is included in the new manual.