| #ifndef _ASM_X86_CURRENT_H | 
 | #define _ASM_X86_CURRENT_H | 
 |  | 
 | #ifdef CONFIG_X86_32 | 
 | #include <linux/compiler.h> | 
 | #include <asm/percpu.h> | 
 |  | 
 | struct task_struct; | 
 |  | 
 | DECLARE_PER_CPU(struct task_struct *, current_task); | 
 | static __always_inline struct task_struct *get_current(void) | 
 | { | 
 | 	return x86_read_percpu(current_task); | 
 | } | 
 |  | 
 | #else /* X86_32 */ | 
 |  | 
 | #ifndef __ASSEMBLY__ | 
 | #include <asm/pda.h> | 
 |  | 
 | struct task_struct; | 
 |  | 
 | static __always_inline struct task_struct *get_current(void) | 
 | { | 
 | 	return read_pda(pcurrent); | 
 | } | 
 |  | 
 | #else /* __ASSEMBLY__ */ | 
 |  | 
 | #include <asm/asm-offsets.h> | 
 | #define GET_CURRENT(reg) movq %gs:(pda_pcurrent),reg | 
 |  | 
 | #endif /* __ASSEMBLY__ */ | 
 |  | 
 | #endif /* X86_32 */ | 
 |  | 
 | #define current get_current() | 
 |  | 
 | #endif /* _ASM_X86_CURRENT_H */ |