AMD64 Support on Wine
This page is for notes on the 64-bit port of Wine to the AMD64 architecture (a.k.a. x64 or x86-64) and the WoW64 setup, which allows running both 32 and 64-bit Windows apps from the same instance of Wine.
Support for 64-bit apps is still only working for Linux. 64-bit versions of other OSes can use the 32-bit build of Wine well, but the WoW64 setup is still a work in progress. See below for more details...
There are some major differences between the x86-64 ABI on Windows and other operating systems. Here's a short list of some of the major ones:
The long datatype is 32 bits on Windows but 64 bits on Linux
- Calling conventions differ
- Different registers used for passing parameters
See the reference documents at the bottom of this page for the complete picture
There are still a lot of improvements that need to be made before Wine can run 64-bit apps on all platforms:
Port to Other OSes
Consistent 32-bit Support
Ideally, BuildingWine, the ConformanceTests, and execution should be as consistent as possible. That should be true whether running both 32-bit and 64-bit apps in Wine, or comparing a stand-alone 32-bit build with the 32-bit components in a WoW64 setup.
One quick way to zero in on simpler differences is to scan the make and test logs from different build directories. Here's a simple script that simply outputs message counts for different directories...
This is a good idea that could use a little work to be more effective
for dir in wine32 wine64 do echo $dir cd $dir echo -n "ok: "; find . -name '*.ok' | wc -l echo -n "err: "; grep ok.*Error test.log | wc -l cd .. done
Anyone that knows a decent Bugzilla query, which lists incorrect differences from Wine bitness or build type (vanilla or WoW64), feel free to add it here.
Start64 has articles, lists, and more about both AMD64 software and compatible hardware
On Wine Wiki:
Common AMD64 porting problems, from the makers of the PVS-Studio static analyzer
Why did the Win64 team choose the LLP64 model?, from the MSDN Old New Thing blog