Difference between revisions of "AArch64"

From ReactOS Wiki
Jump to: navigation, search
(Created page with "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...")
 
m (Let's make this official.)
 
(30 intermediate revisions by 5 users not shown)
Line 3: Line 3:
  
 
== Status ==
 
== Status ==
Currently ReactOS can not boot or run on AArch64.
+
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 [https://reactos.org/forum/viewtopic.php?f=2&t=17977 forum thread].'''''
  
  
 
=== Build System ===
 
=== 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 ====
 +
[[File:vsarm.png|220px|thumb|frame|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 <code>C:\RosBE\Bin</code> (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:<br><code>%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsamd64_arm64.bat"</code> (replace with your VS installation path)
 +
* Make sure to set <code>BISON_PKGDATADIR</code> and <code>M4</code> variables as described in [[Visual Studio]]
 +
* Run <code>configure.cmd</code>
 +
* Type <code>cd output-VS-arm64</code> and run <code>ninja rapps</code> or <code>ninja calc</code>, or just <code>ninja -k 1</code> 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 <code>configure.cmd</code>
 +
** You might need RosBE for ARM64 package (doesn't exist yet)
 +
* Type <code>cd output-VS-arm64</code> and run <code>ninja -k 1</code>
 +
** You might need to fix host-tools issues first (see below)
  
 
=== FreeLoader ===
 
=== FreeLoader ===
Line 20: Line 50:
 
==== Hardware Abstraction Layer ====
 
==== Hardware Abstraction Layer ====
 
Unsupported
 
Unsupported
==== Win32K ====
+
==== Kernel run-time library (RTL) ====
 +
Unsupported
 +
 
 +
=== C run-time library (CRT) ===
 
Unsupported
 
Unsupported
  
Line 27: Line 60:
 
=== KERNEL32.DLL ===
 
=== KERNEL32.DLL ===
 
Unsupported
 
Unsupported
 +
 +
== The Plan ==
 +
This is the general todo list with rough estimates in order to create the ARM64 port.
 +
 +
{| class="wikitable"
 +
! Task
 +
! Completion
 +
! Comments
 +
|-
 +
| Add ARM64 target support to the <code>configure.cmd</code> build script || 100% || Works perfectly with MSVC
 +
|-
 +
| Make simple applications build without errors (calc.exe, rapps.exe) || 50% || See {{JIRA|17518}}
 +
|-
 +
| Create MSVC ARM64 builder in our GitHub CI so we notice when stuff is broken || 0% || Tracked in {{JIRA|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 <code>bootcd-arm64.iso</code> and <code>livecd-arm64.iso</code> || 20% || Build proper EFI-bootable ISO images with El-Torito specification
 +
* [https://github.com/reactos/reactos/pull/4407 PR #4407 (merged)]
 +
* [https://github.com/reactos/reactos/pull/4407 PR #4425]
 +
|-
 +
| 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:
 +
* [[Building ReactOS#Windows.2FMSVC|Building with MSVC]]
 +
* [[AMD64#Building amd64 port|AMD64 building instructions]].
 +
 +
 +
<u>Don't be in hurry and '''propose a [[Commiting Changes|Pull Request]]''' for the each fix you have done into the ReactOS repository.</u>
 +
 +
== Compatible devices list ==
 +
See this forum post: https://reactos.org/forum/viewtopic.php?p=134528#p134528
 +
 +
== Potential testers ==
 +
* [[User:Ben_Nottelling|Ben Nottelling]] - '''Raspberry Pi 3'''
 +
* [[Daniel Reimer]] aka EmuandCo - '''Lumia 950 XL''', '''Microsoft Surface Duo'''
 +
* [[User:Illen|Illen]] - '''Lumia 950 XL''', '''Xiaomi Poco F1'''
 +
* [[User:TheR4K|TheR4K]] - '''Lumia 950 XL'''
 +
* Alula - '''Nubia Mini 5G (TP1803)'''
 +
* [[User:The_DarkFire|The_DarkFire]] - '''ECS LIVA Mini Box QC710 Desktop''', '''Apple M1-based MacBook''', '''Snapdragon 855 Mobile Hardware Development Kit'''
 +
* [[User:Julenuri|Julen Urizar]] - '''Raspberry Pi 3B+''', '''Raspberry Pi 400'''
 +
* [[User:RigoLigo|RigoLigo]] - '''Apple M1-based MacBook'''
 +
* [[User:JoJo_Autoboy|JoJo Autoboy]] - '''Raspberry Pi 4B''', '''Orange Pi 5''', '''Xiaomi Mi A2''', '''S905(X)'''
 +
 +
== See Also ==
 +
* [https://www.imbushuo.net/blog/archives/590 Give TianoCore/EDK2 on AArch64 a hand in 2018]
 +
* [https://www.imbushuo.net/blog/archives/637 Bootstrapping the blue Windows when you have random AArch64 devices in the backyard]
 +
 +
{{Navigation Ports}}
 +
 +
[[Category:Documentation]]

Latest revision as of 17:48, 30 September 2023

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) | Apple TV (1st generation) (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 FM Towns (x86) | PlayStation 4 (x64) | Intel SFI (x86)