1*7b5944d6STiezhu Yang /* SPDX-License-Identifier: GPL-2.0 */ 2*7b5944d6STiezhu Yang #ifndef __ASM_LOONGARCH_CURRENT_H 3*7b5944d6STiezhu Yang #define __ASM_LOONGARCH_CURRENT_H 4*7b5944d6STiezhu Yang 5*7b5944d6STiezhu Yang #include <linux/compiler.h> 6*7b5944d6STiezhu Yang 7*7b5944d6STiezhu Yang #ifndef __ASSEMBLER__ 8*7b5944d6STiezhu Yang 9*7b5944d6STiezhu Yang #include <asm/percpu.h> 10*7b5944d6STiezhu Yang 11*7b5944d6STiezhu Yang struct task_struct; 12*7b5944d6STiezhu Yang 13*7b5944d6STiezhu Yang DECLARE_PER_CPU(struct task_struct *, cpu_tasks); 14*7b5944d6STiezhu Yang 15*7b5944d6STiezhu Yang register struct task_struct *current_thread_pointer __asm__("$tp"); 16*7b5944d6STiezhu Yang get_current(void)17*7b5944d6STiezhu Yangstatic __always_inline struct task_struct *get_current(void) 18*7b5944d6STiezhu Yang { 19*7b5944d6STiezhu Yang return current_thread_pointer; 20*7b5944d6STiezhu Yang } 21*7b5944d6STiezhu Yang 22*7b5944d6STiezhu Yang #define current get_current() 23*7b5944d6STiezhu Yang set_current(struct task_struct * task)24*7b5944d6STiezhu Yangstatic __always_inline void set_current(struct task_struct *task) 25*7b5944d6STiezhu Yang { 26*7b5944d6STiezhu Yang __this_cpu_write(cpu_tasks, task); 27*7b5944d6STiezhu Yang } 28*7b5944d6STiezhu Yang 29*7b5944d6STiezhu Yang #endif /* __ASSEMBLER__ */ 30*7b5944d6STiezhu Yang 31*7b5944d6STiezhu Yang #endif /* __ASM_LOONGARCH_CURRENT_H */ 32