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 (1001B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * Based on arm/arm64/include/asm/current.h
      4 *
      5 * Copyright (C) 2016 ARM
      6 * Copyright (C) 2017 SiFive
      7 */
      8
      9
     10#ifndef _ASM_RISCV_CURRENT_H
     11#define _ASM_RISCV_CURRENT_H
     12
     13#include <linux/bug.h>
     14#include <linux/compiler.h>
     15
     16#ifndef __ASSEMBLY__
     17
     18struct task_struct;
     19
     20register struct task_struct *riscv_current_is_tp __asm__("tp");
     21
     22/*
     23 * This only works because "struct thread_info" is at offset 0 from "struct
     24 * task_struct".  This constraint seems to be necessary on other architectures
     25 * as well, but __switch_to enforces it.  We can't check TASK_TI here because
     26 * <asm/asm-offsets.h> includes this, and I can't get the definition of "struct
     27 * task_struct" here due to some header ordering problems.
     28 */
     29static __always_inline struct task_struct *get_current(void)
     30{
     31	return riscv_current_is_tp;
     32}
     33
     34#define current get_current()
     35
     36register unsigned long current_stack_pointer __asm__("sp");
     37
     38#endif /* __ASSEMBLY__ */
     39
     40#endif /* _ASM_RISCV_CURRENT_H */