--
v5: ntdll: Inline __wine_unix_call(_fast) dispatch in the syscall dispatcher.
ntdll: Restore frame in return path of the x86 syscall dispatchers.
winecrt0: Inline PE __wine_unix_call(_fast) function calls.
ntdll: Only save non-volatile FPU registers for -nofpu syscalls.
opengl32: Use __wine_unix_call_fast instead of __wine_unix_call.
ntdll: Introduce a new __wine_unix_call_fast syscall.
ntdll: Use -nofpu for NtQueryPerformanceCounter and NtYieldExecution.
winebuild: Introduce a new -nofpu syscall spec flag.
ntdll: Add support for syscall flags in the service CounterTable.
ntdll: Avoid double indirection to get x86_64 syscall_frame pointer.
ntdll: Check SYSCALL_HAVE_WRFSGSBASE syscall flag only for wrfsbase.
ntdll: Swap %eax and %edx registers in the i386 syscall dispatcher.
ntdll: Check syscall table and syscall number before saving FPU.
ntdll: Use named labels for jumps in the syscall dispatcher.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1324
In preparation for https://gitlab.winehq.org/wine/wine/-/merge_requests/1324.
This also begins preparation for a slightly different route than what the MR currently takes, with syscall flags eventually stored in the CounterTable rather than overusing syscall number unused bits.
To do that we're checking the syscall number and loading the syscall table (keeping it in %rbx/%ebx) earlier. This assumes that %rbx isn't modified in between, for instance by the eventual `SYS_arch_prctl` syscall, but I believe it is the case?
--
v2: ntdll: Check SYSCALL_HAVE_WRFSGSBASE syscall flag only for wrfsbase.
ntdll: Swap %eax and %edx registers in the i386 syscall dispatcher.
ntdll: Check syscall table and syscall number before saving FPU.
ntdll: Use named labels for jumps in the syscall dispatcher.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1437
> I'm more optimistic about 8.0. Anyway, I wouldn't mind committing it if we need to. At the same time, since there is an active work on the final solution, we may as well wait a few days and see how it goes. Let me defer that to Alexandre (I think he took over that optimization work).
I've committed some fixes inspired by Rémi's work. Hopefully that will be good enough to avoid the direct calls, can you please give it a try?
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1552#note_18342