Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
Arm Community blogs
Arm Community blogs
Architectures and Processors blog Porting to Arm 64-bit
  • Blogs
  • Mentions
  • Sub-Groups
  • Tags
  • Jump...
  • Cancel
More blogs in Arm Community blogs
  • AI blog

  • Announcements

  • Architectures and Processors blog

  • Automotive blog

  • Embedded and Microcontrollers blog

  • Internet of Things (IoT) blog

  • Laptops and Desktops blog

  • Mobile, Graphics, and Gaming blog

  • Operating Systems blog

  • Servers and Cloud Computing blog

  • SoC Design and Simulation blog

  • Tools, Software and IDEs blog

Tell us what you think
Tags
  • Cortex-A53
  • Cortex-A57
  • White Paper
  • Armv8-A
  • 64-bit
Actions
  • RSS
  • More
  • Cancel
Related blog posts
Related forum threads

Porting to Arm 64-bit

Chris Shore
Chris Shore
April 8, 2016
Less than one minute read time.

This white paper is an introduction to porting existing code to the A64 instruction set supported by Armv8-A processors like the Cortex-A53 and Cortex-A57 from Arm. It will also be useful for those writing new code for these platforms.

Why 64-bit?

Diagram of evolution of Arm architecture

It seems that is a question with many answers! For some, it will be the need to address more than 4GB of memory, for others the need for wider registers and greater accuracy of 64-bit data processing, for still others the attraction of a larger register set.

Whatever your reason for looking to move to 64-bit, it is likely that you will have a body of legacy software which will need porting as well as new code which needs writing. This paper is designed to help with both processes.

We’ll start with a quick look at the evolution of the Arm architecture which has brought 64-bit to reality.

Download whitepaper

Porting to ARM 64-bit v4(2).pdf
Anonymous
  • Chris Shore
    Chris Shore over 10 years ago

    Thank you for pointing this out. I will work on a minor update and post it shortly.

    Chris

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • Sreenath P V
    Sreenath P V over 10 years ago

    Hi  Chris,

    I have  doubt on page 10, In the table that shows alternate instruction for PUSH and POP, In A64, to push and pop x0 and x1 we require 16 byte location in stack. But in the example it shows 8. Could you please comment on this? Thanks!

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • Chris Shore
    Chris Shore over 11 years ago

    Hi,

    Thank you for your comment on the document.

    C1x and C++11 are shorthand names for the latest ISO/IEC standards for C (C11, ISO/IEC 9899:2011) and C++ (ISO/IEC 14882:2011). Among other things, these standards introduce standard capabilities for multi-threaded programming. This includes the requirement for standard implementations of mutexes and other forms of "uninterruptible object access". The Load-Acquire and Store-Release instructions introduced in A64 are intended to comply with this.

    I hope this helps.

    Chris

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • Chris Shore
    Chris Shore over 11 years ago

    Hi,

    As you and others have kindly pointed out, there is a minor error here. The structure will also have 4 bytes of padding added at the end to ensure that it aligns properly when declared as an array.

    I will upload a minor update to the document shortly.

    Many thanks for pointing this out. I trust that you found the rest of the document useful.

    Chris

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • zzliu
    zzliu over 11 years ago

    hi,

    Could someone give me a introduction about "C1x/C++11" in the figure of page 2nd ?

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
<>
Architectures and Processors blog
  • Introducing GICv5: Scalable and secure interrupt management for Arm

    Christoffer Dall
    Christoffer Dall
    Introducing Arm GICv5: a scalable, hypervisor-free interrupt controller for modern multi-core systems with improved virtualization and real-time support.
    • April 28, 2025
  • Getting started with AARCHMRS Features.json using Python

    Joh
    Joh
    A high-level introduction to the Arm Architecture Machine Readable Specification (AARCHMRS) Features.json with some examples to interpret and start to work with the available data using Python.
    • April 8, 2025
  • Advancing server manageability on Arm Neoverse Compute Subsystem (CSS) with OpenBMC

    Samer El-Haj-Mahmoud
    Samer El-Haj-Mahmoud
    Arm and 9elements Cyber Security have brought a prototype of OpenBMC to the Arm Neoverse Compute Subsystem (CSS) to advancing server manageability.
    • January 28, 2025