ARM64 support

Motivation

After my ARM port ARM64 (AArch64) was a logical step and due to my experience with ARM it only took days instead of month.

Again we are faster than the other win32 implementation :), therefore it's a pure Winelib port.

Status

  • Yes, It works! (TM)
  • Patchset was committed on January 16. 2013 and is available since Wine-1.5.22
  • Backtraces work
  • WOW64 setup works now

Todo

  • Stubs
  • relay tracing
  • libs/port/interlocked.c: maybe native operations
  • wine-gecko/wine-mono ARM64 port

ABI Problems

As of now, we found two ABI incompatibilities:

How to help

  • Analyze and/or fix (most likely in GCC) the variable arguments problem.
  • Report bugs with winelib or Windows applications.

Compiling

In the likely case that you don't own ARM64 Hardware at the moment, have a look at Linaro Engineering: ARMv8 activity/downloads,

there you get a cross-toolchain, a bootable system and instruction on how to get the Foundation Model from ARM. (qemu should also work, but i haven't had much success with it yet) For the start run configure like:

../configure --host=aarch64-linux-gnu host_alias=aarch64-linux-gnu --with-wine-tools=../yourotherbuilddir/ --without-freetype --without-x --enable-win64

Running Windows arm64 Applications

The SDK for win10 includes some PEs for arm64, have a look at Bug 38714.

There you can also find the first major issue: Security Cookies are always checked on startup, which is not to hard to fix.

Next problem is that there are indications that we have again an ABI incompatibility with variable arguments. We already had that problem with x86_64 and it needed to be fixed within GCC.

A look at the Linux Kernel showed that the user writeable TLS register is used as thread pointer on arm64, which might be a problem. On ARM we needed to adjust the use of that register, which wasn't really used before, but we can't do the same for arm64 now as the register is in use. But we don't know yet if this will be necessary.

See also

André Hentschel

AArch32: ARM

ARM64 commits in Wine

Discussion on linux-arch mailing list


CategoryArchitecture

ARM64 (last edited 2015-07-12 17:55:44 by AndreHentschel)