So I built an ARM64 version of wine to try and run it:
Code: Select all
export CC=clang CXX=clang++ PATH=/path/to/clang-13/bin:$PATH LD_LIBRARY_PATH=/path/to/clang-13/lib
cd wine
./configure
make -j$(nproc)
make install -j$(nproc)
Code: Select all
/path/to/wine-devel-7.5-arm64/bin/wine Wow-ARM64.exe -d3d11
Code: Select all
0748:err:sync:RtlpWaitForCriticalSection section 000000007BC7B438 "dlls/ntdll/loader.c: loader_section" wait timed out in thread 0748, blocked by 0744, retrying (60 sec)
0748:err:sync:RtlpWaitForCriticalSection section 000000007BC7B438 "dlls/ntdll/loader.c: loader_section" wait timed out in thread 0748, blocked by 0744, retrying (60 sec)
0748:err:sync:RtlpWaitForCriticalSection section 000000007BC7B438 "dlls/ntdll/loader.c: loader_section" wait timed out in thread 0748, blocked by 0744, retrying (60 sec)
...
Code: Select all
50932.355:074c:075c:trace:seh:RtlUnwindEx x24=000000000848f140 x25=0000000040000000 x26=0000000000575928 x27=0000000043112ae8
50932.355:074c:075c:trace:seh:RtlUnwindEx x28=000000000848f010 fp=000000000848e7c0 lr=0000000000000000 sp=000000000848e290
50932.355:074c:075c:trace:seh:RtlVirtualUnwind type 2 pc 7bc4f770 sp 848e290 func 7bc4f724
50932.355:074c:075c:trace:seh:unwind_full_data function 7bc4f724-7bc4fdc4: len=0x1a8 ver=0 X=0 E=0 epilogs=1 codes=20
50932.355:074c:075c:trace:seh:RtlVirtualUnwind ret: lr=7bc41df0 sp=848e7c0 handler=0000000000000000
50932.355:074c:075c:trace:seh:unwind_builtin_dll no info found for 7bc41df0 ip 0-0, assuming leaf function
50932.355:074c:075c:trace:seh:unwind_builtin_dll no info found for 7bc41df0 ip 0-0, assuming leaf function
50932.355:074c:075c:trace:seh:unwind_builtin_dll no info found for 7bc41df0 ip 0-0, assuming leaf function
50932.355:074c:075c:trace:seh:unwind_builtin_dll no info found for 7bc41df0 ip 0-0, assuming leaf function
50932.355:074c:075c:trace:seh:unwind_builtin_dll no info found for 7bc41df0 ip 0-0, assuming leaf function
...
loop forever
...
My devices:
Code: Select all
lscpu
Architecture: aarch64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
Vendor ID: Phytium
Model: 3
Model name: S2500
Stepping: 0x1
CPU max MHz: 2600.0000
CPU min MHz: 1900.0000
BogoMIPS: 96.00
Flags: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt lpae evtstrm aes pmull sha1 sha2 crc32
Code: Select all
lspci
...
02:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Oland [Radeon HD 8570 / R5 430 OEM / R7 240/340 / Radeon 520 OEM] (rev 87)
02:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon HD 7000 Series]
03:00.0 SATA controller: Marvell Technology Group Ltd. 88SE9215 PCIe 2.0 x1 4-port SATA 6 Gb/s Controller (rev 11)
04:00.0 Non-Volatile memory controller: Sandisk Corp WD Blue SN500 / PC SN520 NVMe SSD (rev 01)
06:00.0 USB controller: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller (rev 03)
My OS:
A ARM64 Linux distribution based on Debian 10.
---
The Wine binary I built: https://file.winegame.net/runners/wine/ ... m64.tar.xz
It's an ARM64+x86 mixed installation. At first I built a pure ARM64 wine, but I quickly found out that the WoW ARM64 edition has some additional x86 exe, so I built this hybrid.
I run box86 for x86 emulation, so this hybrid install works just fine on x86 games (like Warcraft III). It's even smoother than pure x86 wine (probably because wineserver etc have ARM64 native binaries).
However, ARM64 native games like World of Warcraft do not work. The same deadlock applies whether it is a pure ARM64 wine installation or a mixed ARM64+x86 wine installation. It looks like the execution of Wow-ARM64.exe has not reached its x86 add-on at all. The execution of the EXE enters a deadlock in the early stages of loading.
Any debugging or fix comments are welcome. I have C programming experience, but I am not familiar with the wine project.