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

percpu.h (1354B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef _ASM_IA64_PERCPU_H
      3#define _ASM_IA64_PERCPU_H
      4
      5/*
      6 * Copyright (C) 2002-2003 Hewlett-Packard Co
      7 *	David Mosberger-Tang <davidm@hpl.hp.com>
      8 */
      9
     10#ifdef __ASSEMBLY__
     11# define THIS_CPU(var)	(var)  /* use this to mark accesses to per-CPU variables... */
     12#else /* !__ASSEMBLY__ */
     13
     14
     15#include <linux/threads.h>
     16
     17#ifdef CONFIG_SMP
     18
     19#ifdef HAVE_MODEL_SMALL_ATTRIBUTE
     20# define PER_CPU_ATTRIBUTES	__attribute__((__model__ (__small__)))
     21#endif
     22
     23#define __my_cpu_offset	__ia64_per_cpu_var(local_per_cpu_offset)
     24
     25extern void *per_cpu_init(void);
     26
     27#else /* ! SMP */
     28
     29#define per_cpu_init()				(__phys_per_cpu_start)
     30
     31#endif	/* SMP */
     32
     33#define PER_CPU_BASE_SECTION ".data..percpu"
     34
     35/*
     36 * Be extremely careful when taking the address of this variable!  Due to virtual
     37 * remapping, it is different from the canonical address returned by this_cpu_ptr(&var)!
     38 * On the positive side, using __ia64_per_cpu_var() instead of this_cpu_ptr() is slightly
     39 * more efficient.
     40 */
     41#define __ia64_per_cpu_var(var) (*({					\
     42	__verify_pcpu_ptr(&(var));					\
     43	((typeof(var) __kernel __force *)&(var));			\
     44}))
     45
     46#include <asm-generic/percpu.h>
     47
     48/* Equal to __per_cpu_offset[smp_processor_id()], but faster to access: */
     49DECLARE_PER_CPU(unsigned long, local_per_cpu_offset);
     50
     51#endif /* !__ASSEMBLY__ */
     52
     53#endif /* _ASM_IA64_PERCPU_H */