AArch64
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:
- https://pete.akeo.ie/2017/05/compiling-desktop-arm-applications-with.html
- https://blogs.windows.com/buildingapps/2018/11/15/official-support-for-windows-10-on-arm-development/ - and now officially with Visual Studio 15.9
Building steps
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
- If you have RosBE installed but did not selected this option earlier, you need to add
- 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
andM4
variables as described in Visual Studio - Run
configure.cmd
- Type
cd output-VS-arm64
and runninja rapps
orninja calc
, or justninja -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 runninja -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 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
- Give TianoCore/EDK2 on AArch64 a hand in 2018
- Bootstrapping the blue Windows when you have random AArch64 devices in the backyard
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) |