On Feb 15 2020, Samuel Thibault wrote: > diff --git a/sysdeps/mach/hurd/i386/tls.h b/sysdeps/mach/hurd/i386/tls.h > index c0341ce2c9..7ec8c81a76 100644 > --- a/sysdeps/mach/hurd/i386/tls.h > +++ b/sysdeps/mach/hurd/i386/tls.h > @@ -163,6 +163,114 @@ out: > : "i" (offsetof (tcbhead_t, tcb))); \ > __tcb;}) > > +/* Read member of the thread descriptor directly. */ > +# define THREAD_GETMEM(descr, member) \ > + ({ __typeof (descr->member) __value; > \ > + if (sizeof (__value) == 1) > \ > + asm volatile ("movb %%gs:%P2,%b0" \ > + : "=q" (__value) \ > + : "0" (0), "i" (offsetof (tcbhead_t, member))); \ > + else if (sizeof (__value) == 4) \ > + asm volatile ("movl %%gs:%P1,%0" > \ > + : "=r" (__value) \ > + : "i" (offsetof (tcbhead_t, member))); \ > + else \ > + { \ > + if (sizeof (__value) != 8) \ > + /* There should not be any value with a size other than 1, \ > + 4 or 8. */ \ > + abort (); \
_Static_assert? Andreas. -- Andreas Schwab, sch...@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different."