Commit | Line | Data |
---|---|---|
77ef50a5 VN |
1 | #ifndef ASM_X86__CURRENT_H |
2 | #define ASM_X86__CURRENT_H | |
f0766440 | 3 | |
96a388de | 4 | #ifdef CONFIG_X86_32 |
f0766440 CL |
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 | ||
77ef50a5 | 39 | #endif /* ASM_X86__CURRENT_H */ |