/* SPDX-License-Identifier: GPL-2.0 */ /* * S390 version * Copyright IBM Corp. 1999 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) * * Derived from "include/asm-i386/current.h" */ #ifndef _S390_CURRENT_H #define _S390_CURRENT_H #include #include struct task_struct; static __always_inline struct task_struct *get_current(void) { unsigned long ptr, lc_current; lc_current = offsetof(struct lowcore, current_task); asm_inline( ALTERNATIVE(" lg %[ptr],%[offzero](%%r0)\n", " lg %[ptr],%[offalt](%%r0)\n", ALT_FEATURE(MFEATURE_LOWCORE)) : [ptr] "=d" (ptr) : [offzero] "i" (lc_current), [offalt] "i" (lc_current + LOWCORE_ALT_ADDRESS)); return (struct task_struct *)ptr; } #define current get_current() #endif /* !(_S390_CURRENT_H) */