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 */ 40