Module: wine Branch: master Commit: 5250493177f3dcb1ab455e018c1c3046198db746 URL: https://gitlab.winehq.org/wine/wine/-/commit/5250493177f3dcb1ab455e018c1c304...
Author: Zebediah Figura zfigura@codeweavers.com Date: Wed Jan 11 17:12:05 2023 -0600
ntdll: Manually write byte code for the xsavec instruction.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51268
---
dlls/ntdll/unix/signal_i386.c | 4 +++- dlls/ntdll/unix/signal_x86_64.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/unix/signal_i386.c b/dlls/ntdll/unix/signal_i386.c index d665e281176..d800885748f 100644 --- a/dlls/ntdll/unix/signal_i386.c +++ b/dlls/ntdll/unix/signal_i386.c @@ -2601,7 +2601,9 @@ __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher, "movl %edx,0x274(%ecx)\n\t" "movl %edx,0x278(%ecx)\n\t" "movl %edx,0x27c(%ecx)\n\t" - "xsavec 0x40(%ecx)\n\t" + /* The xsavec instruction is not supported by + * binutils < 2.25. */ + ".byte 0x0f, 0xc7, 0x61, 0x40\n\t" /* xsavec 0x40(%ecx) */ "jmp 4f\n" "1:\txsave 0x40(%ecx)\n\t" "jmp 4f\n" diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c index 6f02f5c6114..94d79b9cdd1 100644 --- a/dlls/ntdll/unix/signal_x86_64.c +++ b/dlls/ntdll/unix/signal_x86_64.c @@ -2693,7 +2693,9 @@ __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher, "movq %rdx,0x2e8(%rcx)\n\t" "movq %rdx,0x2f0(%rcx)\n\t" "movq %rdx,0x2f8(%rcx)\n\t" - "xsavec64 0xc0(%rcx)\n\t" + /* The xsavec instruction is not supported by + * binutils < 2.25. */ + ".byte 0x48, 0x0f, 0xc7, 0xa1, 0xc0, 0x00, 0x00, 0x00\n\t" /* xsavec64 0xc0(%rcx) */ "jmp 3f\n" "1:\txsave64 0xc0(%rcx)\n\t" "jmp 3f\n"