1*886ddfbaSMathieu Desnoyers /* SPDX-License-Identifier: LGPL-2.1-only OR MIT */ 2*886ddfbaSMathieu Desnoyers /* 3*886ddfbaSMathieu Desnoyers * rseq-ppc-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_PPC_THREAD_POINTER 9*886ddfbaSMathieu Desnoyers #define _RSEQ_PPC_THREAD_POINTER 10*886ddfbaSMathieu Desnoyers 11*886ddfbaSMathieu Desnoyers #ifdef __cplusplus 12*886ddfbaSMathieu Desnoyers extern "C" { 13*886ddfbaSMathieu Desnoyers #endif 14*886ddfbaSMathieu Desnoyers rseq_thread_pointer(void)15*886ddfbaSMathieu Desnoyersstatic inline void *rseq_thread_pointer(void) 16*886ddfbaSMathieu Desnoyers { 17*886ddfbaSMathieu Desnoyers #ifdef __powerpc64__ 18*886ddfbaSMathieu Desnoyers register void *__result asm ("r13"); 19*886ddfbaSMathieu Desnoyers #else 20*886ddfbaSMathieu Desnoyers register void *__result asm ("r2"); 21*886ddfbaSMathieu Desnoyers #endif 22*886ddfbaSMathieu Desnoyers asm ("" : "=r" (__result)); 23*886ddfbaSMathieu Desnoyers return __result; 24*886ddfbaSMathieu Desnoyers } 25*886ddfbaSMathieu Desnoyers 26*886ddfbaSMathieu Desnoyers #ifdef __cplusplus 27*886ddfbaSMathieu Desnoyers } 28*886ddfbaSMathieu Desnoyers #endif 29*886ddfbaSMathieu Desnoyers 30*886ddfbaSMathieu Desnoyers #endif 31