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 Desnoyersstatic 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