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

current.h (680B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2#ifndef _ASM_POWERPC_CURRENT_H
      3#define _ASM_POWERPC_CURRENT_H
      4#ifdef __KERNEL__
      5
      6/*
      7 */
      8
      9struct task_struct;
     10
     11#ifdef __powerpc64__
     12#include <linux/stddef.h>
     13#include <asm/paca.h>
     14
     15static inline struct task_struct *get_current(void)
     16{
     17	struct task_struct *task;
     18
     19	/* get_current can be cached by the compiler, so no volatile */
     20	asm ("ld %0,%1(13)"
     21	: "=r" (task)
     22	: "i" (offsetof(struct paca_struct, __current)));
     23
     24	return task;
     25}
     26#define current	get_current()
     27
     28#else
     29
     30/*
     31 * We keep `current' in r2 for speed.
     32 */
     33register struct task_struct *current asm ("r2");
     34
     35#endif
     36
     37#endif /* __KERNEL__ */
     38#endif /* _ASM_POWERPC_CURRENT_H */