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 (General TODO list)
 
(10 intermediate revisions by 2 users not shown)
Line 3: Line 3:
  
 
== Status ==
 
== Status ==
Currently ReactOS can not boot or run on AArch64.
+
Currently ReactOS is not ported to AArch64 yet, so it can not boot or run on this architecture natively.
 +
 
 +
'''''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 ====
 +
 +
You will need Visual Studio 2019. It would work with community edition as well.
 +
 +
* Start VS command prompt '''for your host architecture'''
 +
* Run <code>configure.cmd</code> and build host tools: <code>cd output-VS-i386</code> and then <code>ninja host_tools</code>
 +
* Switch to VS command prompt '''for ARM64 cross-compilation'''
 +
* Run <code>configure.cmd -DWITH_HOST_TOOLS=C:\reactos\output-VS-i386\host-tools</code> and don't forget to put actual host-tools directory path here
 +
* Type <code>cd output-VS-arm64</code> and run <code>ninja -k 1</code>
 +
 +
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)
 +
 +
==== General TODO list ====
 +
 +
* Add ARM64 target support to the <code>configure.cmd</code> build script
 +
* Make ReactOS applications work on ARM64 Windows without crashes (latest Windows 10 for ARM64)
 +
** Fix remaining problems in our CRT and SDK: sync with newer versions of upstream components
 +
** Fix host-tools issues to achieve native ReactOS development on ARM64 Windows
 +
* Fix the AArch64 port build so it can generate <code>bootcd-arm64.iso</code> and <code>livecd-arm64.iso</code>
 +
** Get rid of boot sector, it's not supported on ARM64
 +
** Choose your way of working on ARM64 port boot process:
 +
*** '''1st way:''' Create low-level bootloader that will bootstrap FreeLoader on ARM64
 +
*** '''2nd way:''' Make it booting from [[UEFI]]
 +
**** [http://github.com/maharmstone/quibble Quibble] bootloader by Mark Harmstone might help
 +
**** Revive our <code>bootmgr</code> / <code>rosload</code>
 +
**** Make FreeLoader compatible with UEFI (<code>freeldr.efi</code>)
 +
*** '''3rd way:''' Work on both UEFI and FreeLoader way (requires more effort)
 +
* Once the whole tree is built without issues, we can think about updating this TODO list
 +
 +
 +
These pages may be helpful to accomplish the tasks above:
 +
* [[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>
  
 
=== FreeLoader ===
 
=== FreeLoader ===
Line 20: Line 69:
 
==== 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 79:
 
=== KERNEL32.DLL ===
 
=== KERNEL32.DLL ===
 
Unsupported
 
Unsupported
 +
 +
== Compatible devices list ==
 +
See this forum post: https://reactos.org/forum/viewtopic.php?p=134528#p134528
 +
 +
== 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 19:57, 26 July 2020

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 ReactOS is not ported to AArch64 yet, so it can not boot or run on this architecture natively.

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


Build System

Please refer to these articles:

Building steps

You will need Visual Studio 2019. It would work with community edition as well.

  • Start VS command prompt for your host architecture
  • Run configure.cmd and build host tools: cd output-VS-i386 and then ninja host_tools
  • Switch to VS command prompt for ARM64 cross-compilation
  • Run configure.cmd -DWITH_HOST_TOOLS=C:\reactos\output-VS-i386\host-tools and don't forget to put actual host-tools directory path here
  • Type cd output-VS-arm64 and run ninja -k 1

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)

General TODO list

  • Add ARM64 target support to the configure.cmd build script
  • Make ReactOS applications work on ARM64 Windows without crashes (latest Windows 10 for ARM64)
    • Fix remaining problems in our CRT and SDK: sync with newer versions of upstream components
    • Fix host-tools issues to achieve native ReactOS development on ARM64 Windows
  • Fix the AArch64 port build so it can generate bootcd-arm64.iso and livecd-arm64.iso
    • Get rid of boot sector, it's not supported on ARM64
    • Choose your way of working on ARM64 port boot process:
      • 1st way: Create low-level bootloader that will bootstrap FreeLoader on ARM64
      • 2nd way: Make it booting from UEFI
        • Quibble bootloader by Mark Harmstone might help
        • Revive our bootmgr / rosload
        • Make FreeLoader compatible with UEFI (freeldr.efi)
      • 3rd way: Work on both UEFI and FreeLoader way (requires more effort)
  • Once the whole tree is built without issues, we can think about updating this TODO list


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.

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

Compatible devices list

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

See Also

ReactOS ports‎
In active development Intel IA-32 (x86) | AMD64 (x64)
In slow development NEC PC-98 (x86) | Xbox (x86)
Unmaintained ARM32 (armv7) | PowerPC (ppc) | OLPC (x86)
Missing ports that Windows has ARM64 (aarch64) | Intel IA-64 (Itanium) | SGI 320/540 (x86) | DEC Alpha (axp) | MIPS