1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _ASM_S390_EXPOLINE_H 3 #define _ASM_S390_EXPOLINE_H 4 5 #ifndef __ASSEMBLY__ 6 7 #include <linux/types.h> 8 #include <asm/facility.h> 9 10 extern int nospec_disable; 11 extern int nobp; 12 13 static inline bool nobp_enabled(void) 14 { 15 if (__is_defined(__DECOMPRESSOR)) 16 return false; 17 return nobp && test_facility(82); 18 } 19 20 void nospec_init_branches(void); 21 void nospec_auto_detect(void); 22 void nospec_revert(s32 *start, s32 *end); 23 24 static inline bool nospec_uses_trampoline(void) 25 { 26 return __is_defined(CC_USING_EXPOLINE) && !nospec_disable; 27 } 28 29 #ifdef CONFIG_EXPOLINE_EXTERN 30 31 void __s390_indirect_jump_r1(void); 32 void __s390_indirect_jump_r2(void); 33 void __s390_indirect_jump_r3(void); 34 void __s390_indirect_jump_r4(void); 35 void __s390_indirect_jump_r5(void); 36 void __s390_indirect_jump_r6(void); 37 void __s390_indirect_jump_r7(void); 38 void __s390_indirect_jump_r8(void); 39 void __s390_indirect_jump_r9(void); 40 void __s390_indirect_jump_r10(void); 41 void __s390_indirect_jump_r11(void); 42 void __s390_indirect_jump_r12(void); 43 void __s390_indirect_jump_r13(void); 44 void __s390_indirect_jump_r14(void); 45 void __s390_indirect_jump_r15(void); 46 47 #endif 48 49 #endif /* __ASSEMBLY__ */ 50 51 #endif /* _ASM_S390_EXPOLINE_H */ 52