Hello I fixed these and pushed it, thanks so much!
Samuel Samuel Thibault, le ven. 11 avril 2025 02:27:04 +0200, a ecrit: > Hello, > > Sorry it took me long to manage to fine time to look at this... > > Luca Dariz, le mer. 19 mars 2025 18:11:18 +0100, a ecrit: > > diff --git a/sysdeps/mach/hurd/i386/sigreturn.c > > b/sysdeps/mach/hurd/i386/sigreturn.c > > index ce8df8d02b..618cb74196 100644 > > --- a/sysdeps/mach/hurd/i386/sigreturn.c > > +++ b/sysdeps/mach/hurd/i386/sigreturn.c > > @@ -21,6 +21,8 @@ > > #include <stdlib.h> > > #include <string.h> > > > > +#include <cpuid.h> > > + > > /* This is run on the thread stack after restoring it, to be able to > > unlock SS off sigstack. */ > > static void > > @@ -123,10 +125,27 @@ __sigreturn (struct sigcontext *scp) > > if (scp->sc_onstack) > > ss->sigaltstack.ss_flags &= ~SS_ONSTACK; > > > > - if (scp->sc_fpused) > > - /* Restore the FPU state. Mach conveniently stores the state > > - in the format the i387 `frstor' instruction uses to restore it. */ > > - asm volatile ("frstor %0" : : "m" (scp->sc_fpsave)); > > +#ifdef i386_XFLOAT_STATE > > + if ((scp->xstate) && (scp->xstate->initialized)) > > else? > > > + { > > + unsigned eax, ebx, ecx, edx; > > + __cpuid_count(0xd, 0, eax, ebx, ecx, edx); > > + switch (scp->xstate->fp_save_kind) > > + { > > + case 0: // FNSAVE > > + asm volatile("frstor %0" : : "m" (scp->xstate->hw_state)); > > + break; > > + case 1: // FXSAVE > > + asm volatile("fxrstor %0" : : "m" (scp->xstate->hw_state), \ > > + "a" (eax), "d" (edx)); > > + break; > > + default: // XSAVE > > + asm volatile("xrstor %0" : : "m" (scp->xstate->hw_state), \ > > + "a" (eax), "d" (edx)); > > + break; > > There is also FP_XSAVES which should use xrstors. Better also explicit > FP_XSAVEOPT FP_XSAVEC as using xrstor too. > > (and similar in x86_64) > > > + } > > + } > > +#endif > > > > { > > /* There are convenient instructions to pop state off the stack, so we > > diff --git a/sysdeps/mach/hurd/x86/trampoline.c > > b/sysdeps/mach/hurd/x86/trampoline.c > > index 8e2890f8c5..c333d56022 100644 > > --- a/sysdeps/mach/hurd/x86/trampoline.c > > +++ b/sysdeps/mach/hurd/x86/trampoline.c > > @@ -26,7 +26,11 @@ > > #include "hurdfault.h" > > #include <intr-msg.h> > > #include <sys/ucontext.h> > > - > > +#ifdef __x86_64__ > > +#include <mach/x86_64/mach_i386.h> > > +#else > > +#include <mach/i386/mach_i386.h> > > +#endif > > > > /* Fill in a siginfo_t structure for SA_SIGINFO-enabled handlers. */ > > static void fill_siginfo (siginfo_t *si, int signo, > > @@ -93,7 +97,7 @@ static void fill_ucontext (ucontext_t *uc, const struct > > sigcontext *sc) > > /* XXX FPU state. */ > > memset (&uc->uc_mcontext.fpregs, 0, sizeof (fpregset_t)); > > } > > - > > +#include <stdio.h> > > Spurious change? > > Samuel -- Samuel Hi ! I'm a .signature virus ! Copy me into your ~/.signature, please !