xref: /openbmc/linux/arch/x86/include/asm/current.h (revision 9ac8d3fb)
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