http://bugs.winehq.org/show_bug.cgi?id=58335
--- Comment #117 from Bernhard Übelacker bernhardu@mailbox.org --- (In reply to jdawin from comment #115)
Applying https://gitlab.winehq.org/wine/wine/-/merge_requests/8591 to https://gitlab.winehq.org/wine/wine/-/commit/745a11a2318 doesn't work on a Core2 Quad Q9550 either. But applying it to a current version from git (for example https://gitlab.winehq.org/wine/wine/-/commit/ 17fb31af617cfb65de411c352480d0751f9c14e9) works. But the proposed fix is probably not sufficient or complete, so we still have to wait I guess.
The patch from the merge request MR 8591 works just together with the patch from 03039ab2eef0ceea87900f0085c47b253bae6453. 03039ab2eef0 makes wine enter the function init_xstate_features at affected CPUs.
The patch from MR 8591 makes init_xstate_features fill EnabledFeatures field. And EnabledFeatures (at the first three bits) is used in __wine_syscall_dispatcher, therefore some registers like xmm6 are not saved to the stack, but later it gets restored from the stack.
Therefore if the compiler was using this register and put a value there before getting into __wine_syscall_dispatcher, that value is lost afterwards.
If compiler flags make the compiler not use this register it may have no consequences, like e.g. observed with ubuntu packages vs. fedora packages.