Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
[linux-2.6] / include / asm-x86 / 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 */