2 ARM
Alexandre Julliard edited this page 2024-09-17 14:03:05 +02:00

ARM support

Motivation

Windows apps are mostly compiled for x86 and they won't run on ARM with bare Wine, likewise ARM applications won't run on x86(_64) with bare Wine, so this is not our motivation.

The original motivation was to be able to run winelib-apps on ARM, that even was before it got public that win8 will run on ARM devices. Meanwhile we support these new ARM PEs for win8!

Status

  • Yes, It works! (TM)
  • Running win8 ARM PEs also works.
  • Already ported Putty to ARM as winelib application.
  • Wine on ARM already gets packaged by Debian (since 1.7.35), Fedora, Maemo and openSUSE.
  • Good debugger/disassembler support.
  • Relay tracing.
  • Relocation.
  • Linux Kernel patched upstream for running Windows RT applications see #31322

Todo

  • wine-gecko ARM port (waiting for mingw-w64-arm).
  • wine-mono ARM port (requires JIT/seh code modification, and a few non-essential support libraries fail to build).
  • DCOM

How to help

  • Run winetest and report your results.
  • Fix test failures or analyse them, see below.
  • Report bugs with winelib or Windows RT applications.
  • Write tests for missing functions.

Compiling

Toolchains: Every toolchain with Thumb support should work as we are independent from the crti.o mode since wine-1.5.8

Compiling on the ARM Device is recommended:

../configure && make

Anyway here is a crosscompiling example:

../configure --host=arm-linux-gnueabihf host_alias=arm-linux-gnueabihf --with-wine-tools=../path/to/your/native/wine/build && make

Maybe you also should append something like:

CFLAGS="-mcpu=yourcpu -g -O2" LDFLAGS="-mcpu=yourcpu"

Fixme/Todo: Compiling inside a chroot

Running Windows RT Applications

You can find a list of such ported applications at forum.xda-developers.com. To run them you'll need a recent Wine and a Linux Kernel with the tpidrurw patch, it's included since Kernel 3.11-rc1. When you're unsure if the Kernel you are using supports it, you can clone, make and run tpidrurw-test, it'll tell you if your Kernel is suitable.

Running Windows CE Applications

That's still pre-alpha/proof-of-concept and not part of official Wine, don't expect any success. WineCE can be found at github.

Running Windows/x86 Applications

See Emulation

Analyzed/Known Test Failures

  • d3dx9_36:mesh
  • mscoree:mscoree
    • no wine-mono for arm, bug #43937
  • mshtml:* (FIXME: also applies to several others)
    • no wine-gecko for arm, bug #43938
  • msi:action
  • msvcr100:msvcr100
    • softfloat vs. hardfloat
  • rpcrt4:cstub
  • user32:class
    • per dissonant compile time checks the testsuite expects the x86 value for cbWndExtra, whereas the code uses the pointer size

Wine and Valgrind

Currently a work in progress - Austin English

See also