1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _ASM_S390_ABS_LOWCORE_H 3 #define _ASM_S390_ABS_LOWCORE_H 4 5 #include <asm/sections.h> 6 #include <asm/lowcore.h> 7 8 #define ABS_LOWCORE_MAP_SIZE (NR_CPUS * sizeof(struct lowcore)) 9 10 extern unsigned long __abs_lowcore; 11 12 int abs_lowcore_map(int cpu, struct lowcore *lc, bool alloc); 13 void abs_lowcore_unmap(int cpu); 14 get_abs_lowcore(void)15static inline struct lowcore *get_abs_lowcore(void) 16 { 17 int cpu; 18 19 cpu = get_cpu(); 20 return ((struct lowcore *)__abs_lowcore) + cpu; 21 } 22 put_abs_lowcore(struct lowcore * lc)23static inline void put_abs_lowcore(struct lowcore *lc) 24 { 25 put_cpu(); 26 } 27 28 extern int __bootdata_preserved(relocate_lowcore); 29 have_relocated_lowcore(void)30static inline int have_relocated_lowcore(void) 31 { 32 return relocate_lowcore; 33 } 34 35 #endif /* _ASM_S390_ABS_LOWCORE_H */ 36