1*053f45beSAndroid Build Coastguard Worker /* SPDX-License-Identifier: LGPL-2.1-only OR MIT */ 2*053f45beSAndroid Build Coastguard Worker /* 3*053f45beSAndroid Build Coastguard Worker * rseq-ppc-thread-pointer.h 4*053f45beSAndroid Build Coastguard Worker * 5*053f45beSAndroid Build Coastguard Worker * (C) Copyright 2021 - Mathieu Desnoyers <[email protected]> 6*053f45beSAndroid Build Coastguard Worker */ 7*053f45beSAndroid Build Coastguard Worker 8*053f45beSAndroid Build Coastguard Worker #ifndef _RSEQ_PPC_THREAD_POINTER 9*053f45beSAndroid Build Coastguard Worker #define _RSEQ_PPC_THREAD_POINTER 10*053f45beSAndroid Build Coastguard Worker 11*053f45beSAndroid Build Coastguard Worker #ifdef __cplusplus 12*053f45beSAndroid Build Coastguard Worker extern "C" { 13*053f45beSAndroid Build Coastguard Worker #endif 14*053f45beSAndroid Build Coastguard Worker rseq_thread_pointer(void)15*053f45beSAndroid Build Coastguard Workerstatic inline void *rseq_thread_pointer(void) 16*053f45beSAndroid Build Coastguard Worker { 17*053f45beSAndroid Build Coastguard Worker #ifdef __powerpc64__ 18*053f45beSAndroid Build Coastguard Worker register void *__result asm ("r13"); 19*053f45beSAndroid Build Coastguard Worker #else 20*053f45beSAndroid Build Coastguard Worker register void *__result asm ("r2"); 21*053f45beSAndroid Build Coastguard Worker #endif 22*053f45beSAndroid Build Coastguard Worker asm ("" : "=r" (__result)); 23*053f45beSAndroid Build Coastguard Worker return __result; 24*053f45beSAndroid Build Coastguard Worker } 25*053f45beSAndroid Build Coastguard Worker 26*053f45beSAndroid Build Coastguard Worker #ifdef __cplusplus 27*053f45beSAndroid Build Coastguard Worker } 28*053f45beSAndroid Build Coastguard Worker #endif 29*053f45beSAndroid Build Coastguard Worker 30*053f45beSAndroid Build Coastguard Worker #endif 31