xref: /linux/tools/testing/selftests/rseq/rseq-or1k-thread-pointer.h (revision 1260ed77798502de9c98020040d2995008de10cc)
1*ea1413e5SStafford Horne /* SPDX-License-Identifier: LGPL-2.1-only OR MIT */
2*ea1413e5SStafford Horne #ifndef _RSEQ_OR1K_THREAD_POINTER
3*ea1413e5SStafford Horne #define _RSEQ_OR1K_THREAD_POINTER
4*ea1413e5SStafford Horne 
5*ea1413e5SStafford Horne static inline void *rseq_thread_pointer(void)
6*ea1413e5SStafford Horne {
7*ea1413e5SStafford Horne 	void *__thread_register;
8*ea1413e5SStafford Horne 
9*ea1413e5SStafford Horne 	__asm__ ("l.or %0, r10, r0" : "=r" (__thread_register));
10*ea1413e5SStafford Horne 	return __thread_register;
11*ea1413e5SStafford Horne }
12*ea1413e5SStafford Horne 
13*ea1413e5SStafford Horne #endif
14