1 #ifndef _ASM_IA64_PERCPU_H
2 #define _ASM_IA64_PERCPU_H
4 #include <linux/config.h>
5 #include <linux/compiler.h>
8 * Copyright (C) 2002-2003 Hewlett-Packard Co
9 * David Mosberger-Tang <davidm@hpl.hp.com>
14 #define THIS_CPU(var) (var##__per_cpu) /* use this to mark accesses to per-CPU variables... */
16 #else /* !__ASSEMBLY__ */
18 #include <linux/threads.h>
20 extern unsigned long __per_cpu_offset[NR_CPUS];
23 #define DEFINE_PER_CPU(type, name) \
24 __attribute__((__section__(".data.percpu"))) __typeof__(type) name##__per_cpu
26 #define DECLARE_PER_CPU(type, name) extern __typeof__(type) name##__per_cpu
28 #define __get_cpu_var(var) (var##__per_cpu)
30 # define per_cpu(var, cpu) (*RELOC_HIDE(&var##__per_cpu, __per_cpu_offset[cpu]))
32 # define per_cpu(var, cpu) ((void)cpu, __get_cpu_var(var))
35 #define EXPORT_PER_CPU_SYMBOL(var) EXPORT_SYMBOL(var##__per_cpu)
36 #define EXPORT_PER_CPU_SYMBOL_GPL(var) EXPORT_SYMBOL_GPL(var##__per_cpu)
38 extern void setup_per_cpu_areas (void);
40 #endif /* !__ASSEMBLY__ */
42 #endif /* _ASM_IA64_PERCPU_H */