[PATCH 3/9] ntdll: Store x86_64 YMM context in syscall frame.
Alexandre Julliard
julliard at winehq.org
Thu Feb 18 10:43:37 CST 2021
Jacek Caban <jacek at codeweavers.com> writes:
> /**********************************************************************
> * signal_init_threading
> */
> void signal_init_threading(void)
> {
> + int regs[4];
> + void *ptr;
> +
> + extern void __wine_syscall_dispatcher_xsave(void) DECLSPEC_HIDDEN;
> +
> + ntdll_cpuid( regs, 1, 0 );
> + if (regs[2] & (0x1 << 27)) /* xsave OS enabled */
> + {
> + signal_syscall_dispatcher = __wine_syscall_dispatcher_xsave;
> + }
> +
> + /* sneak in a syscall dispatcher pointer at a fixed address (7ffe1000) */
> + ptr = (char *)user_shared_data + page_size;
> + anon_mmap_fixed( ptr, page_size, PROT_READ | PROT_WRITE, 0 );
> + *(void **)ptr = signal_syscall_dispatcher;
> }
It seems it would be cleaner to do this after we have done the full CPU
detection, and reuse the results instead of duplicating the cpuid checks.
--
Alexandre Julliard
julliard at winehq.org
More information about the wine-devel
mailing list