18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: LGPL-2.1-only OR MIT */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * rseq-ppc-thread-pointer.h 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * (C) Copyright 2021 - Mathieu Desnoyers <mathieu.desnoyers@efficios.com> 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#ifndef _RSEQ_PPC_THREAD_POINTER 98c2ecf20Sopenharmony_ci#define _RSEQ_PPC_THREAD_POINTER 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#ifdef __cplusplus 128c2ecf20Sopenharmony_ciextern "C" { 138c2ecf20Sopenharmony_ci#endif 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_cistatic inline void *rseq_thread_pointer(void) 168c2ecf20Sopenharmony_ci{ 178c2ecf20Sopenharmony_ci#ifdef __powerpc64__ 188c2ecf20Sopenharmony_ci register void *__result asm ("r13"); 198c2ecf20Sopenharmony_ci#else 208c2ecf20Sopenharmony_ci register void *__result asm ("r2"); 218c2ecf20Sopenharmony_ci#endif 228c2ecf20Sopenharmony_ci asm ("" : "=r" (__result)); 238c2ecf20Sopenharmony_ci return __result; 248c2ecf20Sopenharmony_ci} 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ci#ifdef __cplusplus 278c2ecf20Sopenharmony_ci} 288c2ecf20Sopenharmony_ci#endif 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ci#endif 31