On Fri, 27 Jun 2025, Corinna Vinschen via Cygwin wrote:

> Hi Pip,
>
> 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?

> >     subq    %rbx,%rsp
>
>   +     andq    \$-64, %rsp
>

-- 
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

Reply via email to