[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [hurd,commited] hurd: Add THREAD_GET/SETMEM/_NC
From: |
Andreas Schwab |
Subject: |
Re: [hurd,commited] hurd: Add THREAD_GET/SETMEM/_NC |
Date: |
Sat, 15 Feb 2020 14:51:24 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) |
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, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1
"And now for something completely different."
- Re: [hurd,commited] hurd: Add THREAD_GET/SETMEM/_NC,
Andreas Schwab <=