38 lines · 699 B · C
RawDownload
/* SPDX-License-Identifier: LGPL-2.1-only OR MIT *//* * rseq-x86-thread-pointer.h * * (C) Copyright 2021 - Mathieu Desnoyers <mathieu.desnoyers@efficios.com> */ #ifndef _RSEQ_X86_THREAD_POINTER#define _RSEQ_X86_THREAD_POINTER #ifdef __cplusplusextern "C" {#endif #if __GNUC__ > 11 || (__GNUC__ == 11 && __GNUC_MINOR__ >= 1)static inline void *rseq_thread_pointer(void){	return __builtin_thread_pointer();}#elsestatic inline void *rseq_thread_pointer(void){	void *__result; # ifdef __x86_64__	__asm__ ("mov %%fs:0, %0" : "=r" (__result));# else	__asm__ ("mov %%gs:0, %0" : "=r" (__result));# endif	return __result;}#endif /* !GCC 11 */ #ifdef __cplusplus}#endif #endif