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 Dellerstatic __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