mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.3 KiB
53 lines
1.3 KiB
/* SPDX-License-Identifier: GPL-2.0 */ |
|
#ifndef _ASM_IA64_PERCPU_H |
|
#define _ASM_IA64_PERCPU_H |
|
|
|
/* |
|
* Copyright (C) 2002-2003 Hewlett-Packard Co |
|
* David Mosberger-Tang <[email protected]> |
|
*/ |
|
|
|
#ifdef __ASSEMBLY__ |
|
# define THIS_CPU(var) (var) /* use this to mark accesses to per-CPU variables... */ |
|
#else /* !__ASSEMBLY__ */ |
|
|
|
|
|
#include <linux/threads.h> |
|
|
|
#ifdef CONFIG_SMP |
|
|
|
#ifdef HAVE_MODEL_SMALL_ATTRIBUTE |
|
# define PER_CPU_ATTRIBUTES __attribute__((__model__ (__small__))) |
|
#endif |
|
|
|
#define __my_cpu_offset __ia64_per_cpu_var(local_per_cpu_offset) |
|
|
|
extern void *per_cpu_init(void); |
|
|
|
#else /* ! SMP */ |
|
|
|
#define per_cpu_init() (__phys_per_cpu_start) |
|
|
|
#endif /* SMP */ |
|
|
|
#define PER_CPU_BASE_SECTION ".data..percpu" |
|
|
|
/* |
|
* Be extremely careful when taking the address of this variable! Due to virtual |
|
* remapping, it is different from the canonical address returned by this_cpu_ptr(&var)! |
|
* On the positive side, using __ia64_per_cpu_var() instead of this_cpu_ptr() is slightly |
|
* more efficient. |
|
*/ |
|
#define __ia64_per_cpu_var(var) (*({ \ |
|
__verify_pcpu_ptr(&(var)); \ |
|
((typeof(var) __kernel __force *)&(var)); \ |
|
})) |
|
|
|
#include <asm-generic/percpu.h> |
|
|
|
/* Equal to __per_cpu_offset[smp_processor_id()], but faster to access: */ |
|
DECLARE_PER_CPU(unsigned long, local_per_cpu_offset); |
|
|
|
#endif /* !__ASSEMBLY__ */ |
|
|
|
#endif /* _ASM_IA64_PERCPU_H */
|
|
|