cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

rseq-x86-thread-pointer.h (687B)


      1/* SPDX-License-Identifier: LGPL-2.1-only OR MIT */
      2/*
      3 * rseq-x86-thread-pointer.h
      4 *
      5 * (C) Copyright 2021 - Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
      6 */
      7
      8#ifndef _RSEQ_X86_THREAD_POINTER
      9#define _RSEQ_X86_THREAD_POINTER
     10
     11#include <features.h>
     12
     13#ifdef __cplusplus
     14extern "C" {
     15#endif
     16
     17#if __GNUC_PREREQ (11, 1)
     18static inline void *rseq_thread_pointer(void)
     19{
     20	return __builtin_thread_pointer();
     21}
     22#else
     23static inline void *rseq_thread_pointer(void)
     24{
     25	void *__result;
     26
     27# ifdef __x86_64__
     28	__asm__ ("mov %%fs:0, %0" : "=r" (__result));
     29# else
     30	__asm__ ("mov %%gs:0, %0" : "=r" (__result));
     31# endif
     32	return __result;
     33}
     34#endif /* !GCC 11 */
     35
     36#ifdef __cplusplus
     37}
     38#endif
     39
     40#endif