1*886ddfbaSMathieu Desnoyers /* SPDX-License-Identifier: LGPL-2.1-only OR MIT */
2*886ddfbaSMathieu Desnoyers /*
3*886ddfbaSMathieu Desnoyers  * rseq-generic-thread-pointer.h
4*886ddfbaSMathieu Desnoyers  *
5*886ddfbaSMathieu Desnoyers  * (C) Copyright 2021 - Mathieu Desnoyers <[email protected]>
6*886ddfbaSMathieu Desnoyers  */
7*886ddfbaSMathieu Desnoyers 
8*886ddfbaSMathieu Desnoyers #ifndef _RSEQ_GENERIC_THREAD_POINTER
9*886ddfbaSMathieu Desnoyers #define _RSEQ_GENERIC_THREAD_POINTER
10*886ddfbaSMathieu Desnoyers 
11*886ddfbaSMathieu Desnoyers #ifdef __cplusplus
12*886ddfbaSMathieu Desnoyers extern "C" {
13*886ddfbaSMathieu Desnoyers #endif
14*886ddfbaSMathieu Desnoyers 
15*886ddfbaSMathieu Desnoyers /* Use gcc builtin thread pointer. */
rseq_thread_pointer(void)16*886ddfbaSMathieu Desnoyers static inline void *rseq_thread_pointer(void)
17*886ddfbaSMathieu Desnoyers {
18*886ddfbaSMathieu Desnoyers 	return __builtin_thread_pointer();
19*886ddfbaSMathieu Desnoyers }
20*886ddfbaSMathieu Desnoyers 
21*886ddfbaSMathieu Desnoyers #ifdef __cplusplus
22*886ddfbaSMathieu Desnoyers }
23*886ddfbaSMathieu Desnoyers #endif
24*886ddfbaSMathieu Desnoyers 
25*886ddfbaSMathieu Desnoyers #endif
26