xref: /aosp_15_r20/external/linux-kselftest/tools/testing/selftests/rseq/rseq-generic-thread-pointer.h (revision 053f45be4e351dfd5e965df293cd45b779f579ee)
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-generic-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_GENERIC_THREAD_POINTER
9*053f45beSAndroid Build Coastguard Worker #define _RSEQ_GENERIC_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 
15*053f45beSAndroid Build Coastguard Worker /* Use gcc builtin thread pointer. */
rseq_thread_pointer(void)16*053f45beSAndroid Build Coastguard Worker static inline void *rseq_thread_pointer(void)
17*053f45beSAndroid Build Coastguard Worker {
18*053f45beSAndroid Build Coastguard Worker 	return __builtin_thread_pointer();
19*053f45beSAndroid Build Coastguard Worker }
20*053f45beSAndroid Build Coastguard Worker 
21*053f45beSAndroid Build Coastguard Worker #ifdef __cplusplus
22*053f45beSAndroid Build Coastguard Worker }
23*053f45beSAndroid Build Coastguard Worker #endif
24*053f45beSAndroid Build Coastguard Worker 
25*053f45beSAndroid Build Coastguard Worker #endif
26