blob: bee64593023e2f34d0be046dcddd47d5e3167e60 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#ifndef __ARCH_SPARC64_PERCPU__
2#define __ARCH_SPARC64_PERCPU__
3
4#include <linux/compiler.h>
5
David S. Miller195f7fd2007-08-18 00:07:40 -07006register unsigned long __local_per_cpu_offset asm("g5");
7
Linus Torvalds1da177e2005-04-16 15:20:36 -07008#ifdef CONFIG_SMP
9
David S. Miller5cbc3072007-05-25 15:49:59 -070010extern void real_setup_per_cpu_areas(void);
Linus Torvalds1da177e2005-04-16 15:20:36 -070011
12extern unsigned long __per_cpu_base;
13extern unsigned long __per_cpu_shift;
14#define __per_cpu_offset(__cpu) \
15 (__per_cpu_base + ((unsigned long)(__cpu) << __per_cpu_shift))
Ingo Molnara875a692006-07-03 00:24:26 -070016#define per_cpu_offset(x) (__per_cpu_offset(x))
Linus Torvalds1da177e2005-04-16 15:20:36 -070017
travis@sgi.com3afc6202008-01-30 23:27:58 +010018#define __my_cpu_offset __local_per_cpu_offset
Linus Torvalds1da177e2005-04-16 15:20:36 -070019
Linus Torvalds1da177e2005-04-16 15:20:36 -070020#else /* ! SMP */
21
David S. Miller5cbc3072007-05-25 15:49:59 -070022#define real_setup_per_cpu_areas() do { } while (0)
Linus Torvalds1da177e2005-04-16 15:20:36 -070023
Linus Torvalds1da177e2005-04-16 15:20:36 -070024#endif /* SMP */
25
travis@sgi.com3afc6202008-01-30 23:27:58 +010026#include <asm-generic/percpu.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070027
Linus Torvalds1da177e2005-04-16 15:20:36 -070028#endif /* __ARCH_SPARC64_PERCPU__ */