aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-powerpc
diff options
context:
space:
mode:
authortravis@sgi.com <travis@sgi.com>2008-01-30 17:27:58 -0500
committerIngo Molnar <mingo@elte.hu>2008-01-30 17:27:58 -0500
commit56f902051dd040e8a735a225caf0e3e4ffb0a6c5 (patch)
tree3b20a0f3ab32f7fef1b325214f884330088e6dd3 /include/asm-powerpc
parent05991bef104051d47e2160ee9499186aff7da5ad (diff)
POWERPC: use generic per cpu
Powerpc has a way to determine the address of the per cpu area of the currently executing processor via the paca and the array of per cpu offsets is avoided by looking up the per cpu area from the remote paca's (copying x86_64). Cc: Paul Mackerras <paulus@samba.org> Cc: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> Signed-off-by: Mike Travis <travis@sgi.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Acked-by: Olof Johansson <olof@lixom.net> Tested-by: Geoff Levand <geoffrey.levand@am.sony.com>
Diffstat (limited to 'include/asm-powerpc')
-rw-r--r--include/asm-powerpc/percpu.h22
1 files changed, 3 insertions, 19 deletions
diff --git a/include/asm-powerpc/percpu.h b/include/asm-powerpc/percpu.h
index 1b7568838b43..ccb0523eb3b4 100644
--- a/include/asm-powerpc/percpu.h
+++ b/include/asm-powerpc/percpu.h
@@ -13,28 +13,12 @@
13#include <asm/paca.h> 13#include <asm/paca.h>
14 14
15#define __per_cpu_offset(cpu) (paca[cpu].data_offset) 15#define __per_cpu_offset(cpu) (paca[cpu].data_offset)
16#define __my_cpu_offset() get_paca()->data_offset 16#define __my_cpu_offset get_paca()->data_offset
17#define per_cpu_offset(x) (__per_cpu_offset(x)) 17#define per_cpu_offset(x) (__per_cpu_offset(x))
18 18
19/* var is in discarded region: offset to particular copy we want */ 19#endif /* CONFIG_SMP */
20#define per_cpu(var, cpu) (*RELOC_HIDE(&per_cpu__##var, __per_cpu_offset(cpu))) 20#endif /* __powerpc64__ */
21#define __get_cpu_var(var) (*RELOC_HIDE(&per_cpu__##var, __my_cpu_offset()))
22#define __raw_get_cpu_var(var) (*RELOC_HIDE(&per_cpu__##var, local_paca->data_offset))
23 21
24extern void setup_per_cpu_areas(void);
25
26#else /* ! SMP */
27
28#define per_cpu(var, cpu) (*((void)(cpu), &per_cpu__##var))
29#define __get_cpu_var(var) per_cpu__##var
30#define __raw_get_cpu_var(var) per_cpu__##var
31
32#endif /* SMP */
33
34#define DECLARE_PER_CPU(type, name) extern __typeof__(type) per_cpu__##name
35
36#else
37#include <asm-generic/percpu.h> 22#include <asm-generic/percpu.h>
38#endif
39 23
40#endif /* _ASM_POWERPC_PERCPU_H_ */ 24#endif /* _ASM_POWERPC_PERCPU_H_ */