blob: 510ae1d3486c7c289b80e765af719aa80c166c94 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#ifndef __ARCH_I386_PERCPU__
2#define __ARCH_I386_PERCPU__
3
Stas Sergeevbe44d2a2006-12-07 02:14:01 +01004#ifndef __ASSEMBLY__
Linus Torvalds1da177e2005-04-16 15:20:36 -07005#include <asm-generic/percpu.h>
Stas Sergeevbe44d2a2006-12-07 02:14:01 +01006#else
7
8/*
9 * PER_CPU finds an address of a per-cpu variable.
10 *
11 * Args:
12 * var - variable name
13 * cpu - 32bit register containing the current CPU number
14 *
15 * The resulting address is stored in the "cpu" argument.
16 *
17 * Example:
18 * PER_CPU(cpu_gdt_descr, %ebx)
19 */
20#ifdef CONFIG_SMP
21#define PER_CPU(var, cpu) \
22 movl __per_cpu_offset(,cpu,4), cpu; \
23 addl $per_cpu__/**/var, cpu;
24#else /* ! SMP */
25#define PER_CPU(var, cpu) \
26 movl $per_cpu__/**/var, cpu;
27#endif /* SMP */
28
29#endif /* !__ASSEMBLY__ */
Linus Torvalds1da177e2005-04-16 15:20:36 -070030
31#endif /* __ARCH_I386_PERCPU__ */