xref: /openbmc/linux/arch/parisc/include/asm/current.h (revision 8278cc16)
12214c0e7SHelge Deller /* SPDX-License-Identifier: GPL-2.0 */
22214c0e7SHelge Deller #ifndef _ASM_PARISC_CURRENT_H
32214c0e7SHelge Deller #define _ASM_PARISC_CURRENT_H
42214c0e7SHelge Deller 
52214c0e7SHelge Deller #ifndef __ASSEMBLY__
62214c0e7SHelge Deller struct task_struct;
72214c0e7SHelge Deller 
get_current(void)82214c0e7SHelge Deller static __always_inline struct task_struct *get_current(void)
92214c0e7SHelge Deller {
10*8278cc16SHelge Deller 	struct task_struct *ts;
11*8278cc16SHelge Deller 
12*8278cc16SHelge Deller 	/* do not use mfctl() macro as it is marked volatile */
13*8278cc16SHelge Deller 	asm( "mfctl %%cr30,%0" : "=r" (ts) );
14*8278cc16SHelge Deller 	return ts;
152214c0e7SHelge Deller }
162214c0e7SHelge Deller 
172214c0e7SHelge Deller #define current get_current()
182214c0e7SHelge Deller 
192214c0e7SHelge Deller #endif /* __ASSEMBLY__ */
202214c0e7SHelge Deller 
212214c0e7SHelge Deller #endif /* _ASM_PARISC_CURRENT_H */
22