mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
886ddfba93
This is done in preparation for the selftest uplift to become compatible with glibc-2.35. glibc-2.35 exposes the rseq per-thread data in the TCB, accessible at an offset from the thread pointer. The toolchains do not implement accessing the thread pointer on all architectures. Provide thread pointer getters for ppc and x86 which lack (or lacked until recently) toolchain support. Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lkml.kernel.org/r/20220124171253.22072-7-mathieu.desnoyers@efficios.com
31 lines
517 B
C
31 lines
517 B
C
/* SPDX-License-Identifier: LGPL-2.1-only OR MIT */
|
|
/*
|
|
* rseq-ppc-thread-pointer.h
|
|
*
|
|
* (C) Copyright 2021 - Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
|
*/
|
|
|
|
#ifndef _RSEQ_PPC_THREAD_POINTER
|
|
#define _RSEQ_PPC_THREAD_POINTER
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
static inline void *rseq_thread_pointer(void)
|
|
{
|
|
#ifdef __powerpc64__
|
|
register void *__result asm ("r13");
|
|
#else
|
|
register void *__result asm ("r2");
|
|
#endif
|
|
asm ("" : "=r" (__result));
|
|
return __result;
|
|
}
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|