a863ead856f3d37de49d023a156f98b1d4f540c5
[pandora-kernel.git] / arch / x86 / include / asm / current.h
1 #ifndef ASM_X86__CURRENT_H
2 #define ASM_X86__CURRENT_H
3
4 #ifdef CONFIG_X86_32
5 #include <linux/compiler.h>
6 #include <asm/percpu.h>
7
8 struct task_struct;
9
10 DECLARE_PER_CPU(struct task_struct *, current_task);
11 static __always_inline struct task_struct *get_current(void)
12 {
13         return x86_read_percpu(current_task);
14 }
15
16 #else /* X86_32 */
17
18 #ifndef __ASSEMBLY__
19 #include <asm/pda.h>
20
21 struct task_struct;
22
23 static __always_inline struct task_struct *get_current(void)
24 {
25         return read_pda(pcurrent);
26 }
27
28 #else /* __ASSEMBLY__ */
29
30 #include <asm/asm-offsets.h>
31 #define GET_CURRENT(reg) movq %gs:(pda_pcurrent),reg
32
33 #endif /* __ASSEMBLY__ */
34
35 #endif /* X86_32 */
36
37 #define current get_current()
38
39 #endif /* ASM_X86__CURRENT_H */