On 2025-06-27 11:45, Jeremy Drake via Cygwin wrote:
On Fri, 27 Jun 2025, Corinna Vinschen via Cygwin wrote:
On Jun 27 14:41, Pip Cet via Cygwin wrote:
My suggested fix is to align the value in %rbx to the next 64-byte
multiple after the "cpuid" instruction is executed, by performing the
assembler equivalent of $rbx += 63; $rbx &= -64; I tried this:
diff --git a/winsup/cygwin/scripts/gendef b/winsup/cygwin/scripts/gendef
index 861a2405b..d681fde3f 100755
--- a/winsup/cygwin/scripts/gendef
+++ b/winsup/cygwin/scripts/gendef
@@ -232,6 +232,8 @@ sigdelayed:
movl \$0x0d,%eax
xorl %ecx,%ecx
cpuid # get necessary space for xsave
+ addq \$63, %rbx
+ andq \$-64, %rbx # align to next 64-byte multiple
what about a oneliner instead by just aligning rsp? As in
movq %rbx,%rcx
addq \$0x48,%rbx # 0x18 for alignment, 0x30 for additional space
If aligning via andq, does the 0x18 "for alignment" still need to be
included?
I think that's a holdover from the non-xsave path above this section, and is the
extra space needed here in the xsave path?
subq %rbx,%rsp
+ andq \$-64, %rsp
--
Take care. Thanks, Brian Inglis Calgary, Alberta, Canada
La perfection est atteinte Perfection is achieved
non pas lorsqu'il n'y a plus rien à ajouter not when there is no more to add
mais lorsqu'il n'y a plus rien à retrancher but when there is no more to cut
-- Antoine de Saint-Exupéry
--
Problem reports: https://cygwin.com/problems.html
FAQ: https://cygwin.com/faq/
Documentation: https://cygwin.com/docs.html
Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple