AArch64

From ReactOS Wiki
Jump to: navigation, search

AArch64 is a 64-bit execution state of the ARMv8 Instruction Set Architecture, which itself was introduced in 2011. Microsoft Windows publicly started supporting AArch64 with Windows 10 Pro in 2016.

Status

Currently the primary branch where all the current work is being published is under: https://github.com/reactos/reactos/tree/darkfire/arm64bringup

ReactOS is looking for help creating ARM64 port, see forum thread.


Build System

Please refer to these articles:

Building steps

Visual Studio ARM64 cross-compilation tools

You will need latest RosBE and Visual Studio 2019 installed. It would work with VS community edition as well.

  • Make sure you have selected "Add BIN folder to PATH variable" when installing RosBE (see Visual Studio for details)
    • If you have RosBE installed but did not selected this option earlier, you need to add C:\RosBE\Bin (or your installation directory) to the PATH environment variable
  • Start VS command prompt for ARM64 cross-compilation
    • Normally you should have "x64_arm64 Cross Tools Command Prompt for VS" shortcut in your Start Menu within Visual Studio section
    • If you don't have it, make sure you have selected ARM64 cross-compilation tools in VS installer
    • If the tools are installed but there is still no shortcut, you can create it manually:
      %comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsamd64_arm64.bat" (replace with your VS installation path)
  • Make sure to set BISON_PKGDATADIR and M4 variables as described in Visual Studio
  • Run configure.cmd
  • Type cd output-VS-arm64 and run ninja rapps or ninja calc, or just ninja -k 1 to build everything (in latter case there will be lots of build errors to fix)

If you're developing on ARM64 device with Windows on ARM:

  • Start VS command prompt for your host architecture
  • Run configure.cmd
    • You might need RosBE for ARM64 package (doesn't exist yet)
  • Type cd output-VS-arm64 and run ninja -k 1
    • You might need to fix host-tools issues first (see below)

FreeLoader

Unsupported

Kernel

Unsupported

Memory Manager

Unsupported

Processes

Unsupported

Hardware Abstraction Layer

Unsupported

Kernel run-time library (RTL)

Unsupported

C run-time library (CRT)

Unsupported

NTDLL.DLL

Unsupported

KERNEL32.DLL

Unsupported

The Plan

This is the general todo list with rough estimates in order to create the ARM64 port.

Task Completion Comments
Add ARM64 target support to the configure.cmd build script 100% Works perfectly with MSVC
Make simple applications build without errors (calc.exe, rapps.exe) 50% See CORE-17518
Create MSVC ARM64 builder in our GitHub CI so we notice when stuff is broken 0% Tracked in CORE-17518
Make ReactOS applications work on Windows without crashes 0% Missing functions: (TBD)
  • Fix remaining problems in our CRT and SDK: possibly sync with newer versions of upstream components
Fix build errors for all modules 0%
Build ISO images bootcd-arm64.iso and livecd-arm64.iso 20% Build proper EFI-bootable ISO images with El-Torito specification
Work on bootloader 45% UEFI version of FreeLoader is being worked on: UEFI Freeldr. ARM64 boot support now starts to freeloader menu on MBR devices


These pages may be helpful to accomplish the tasks above:


Don't be in hurry and propose a Pull Request for the each fix you have done into the ReactOS repository.

Compatible devices list

See this forum post: https://reactos.org/forum/viewtopic.php?p=134528#p134528

Potential testers

  • Ben Nottelling - Raspberry Pi 3
  • Daniel Reimer aka EmuandCo - Lumia 950 XL, Microsoft Surface Duo
  • Illen - Lumia 950 XL, Xiaomi Poco F1
  • TheR4K - Lumia 950 XL
  • Alula - Nubia Mini 5G (TP1803)
  • The_DarkFire - ECS LIVA Mini Box QC710 Desktop, Apple M1-based MacBook, Snapdragon 855 Mobile Hardware Development Kit
  • Julen Urizar - Raspberry Pi 3B+, Raspberry Pi 400
  • RigoLigo - Apple M1-based MacBook
  • JoJo Autoboy - Raspberry Pi 4B, Orange Pi 5, Xiaomi Mi A2, S905(X)

See Also

ReactOS ports‎
In active development Intel IA-32 (x86) | AMD64 (x64)
In slow development ARM64 (aarch64) | ARM32 (armv7) | NEC PC-98 (x86) | OG Xbox (x86)
Unmaintained OLPC (x86)
Missing ports that Windows has Intel IA-64 (Itanium) | IBM PS/2 MCA (x86) | SGI 320/540 (x86) | DEC Alpha (axp) | MIPS | PowerPC (ppc)
Ideas for new ports Apple TV 1st Gen (x86) | FM Towns (x86) | PlayStation 4 (x64) | Intel SFI (x86)