1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _ASM_X86_CURRENT_H
3 #define _ASM_X86_CURRENT_H
5 #include <linux/build_bug.h>
6 #include <linux/compiler.h>
10 #include <linux/cache.h>
11 #include <asm/percpu.h>
18 struct task_struct
*current_task
;
21 #ifdef CONFIG_CALL_DEPTH_TRACKING
24 unsigned long top_of_stack
;
25 void *hardirq_stack_ptr
;
28 bool hardirq_stack_inuse
;
30 void *softirq_stack_ptr
;
36 static_assert(sizeof(struct pcpu_hot
) == 64);
38 DECLARE_PER_CPU_ALIGNED(struct pcpu_hot
, pcpu_hot
);
40 /* const-qualified alias to pcpu_hot, aliased by linker. */
41 DECLARE_PER_CPU_ALIGNED(const struct pcpu_hot __percpu_seg_override
,
44 static __always_inline
struct task_struct
*get_current(void)
46 if (IS_ENABLED(CONFIG_USE_X86_SEG_SUPPORT
))
47 return this_cpu_read_const(const_pcpu_hot
.current_task
);
49 return this_cpu_read_stable(pcpu_hot
.current_task
);
52 #define current get_current()
54 #endif /* __ASSEMBLY__ */
56 #endif /* _ASM_X86_CURRENT_H */