1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 3 #ifndef __ASM_SPECTRE_H 4 #define __ASM_SPECTRE_H 5 6 enum { 7 SPECTRE_UNAFFECTED, 8 SPECTRE_MITIGATED, 9 SPECTRE_VULNERABLE, 10 }; 11 12 enum { 13 __SPECTRE_V2_METHOD_BPIALL, 14 __SPECTRE_V2_METHOD_ICIALLU, 15 __SPECTRE_V2_METHOD_SMC, 16 __SPECTRE_V2_METHOD_HVC, 17 __SPECTRE_V2_METHOD_LOOP8, 18 }; 19 20 enum { 21 SPECTRE_V2_METHOD_BPIALL = BIT(__SPECTRE_V2_METHOD_BPIALL), 22 SPECTRE_V2_METHOD_ICIALLU = BIT(__SPECTRE_V2_METHOD_ICIALLU), 23 SPECTRE_V2_METHOD_SMC = BIT(__SPECTRE_V2_METHOD_SMC), 24 SPECTRE_V2_METHOD_HVC = BIT(__SPECTRE_V2_METHOD_HVC), 25 SPECTRE_V2_METHOD_LOOP8 = BIT(__SPECTRE_V2_METHOD_LOOP8), 26 }; 27 28 #ifdef CONFIG_GENERIC_CPU_VULNERABILITIES 29 void spectre_v2_update_state(unsigned int state, unsigned int methods); 30 #else 31 static inline void spectre_v2_update_state(unsigned int state, 32 unsigned int methods) 33 {} 34 #endif 35 36 int spectre_bhb_update_vectors(unsigned int method); 37 38 void cpu_v7_ca8_ibe(void); 39 void cpu_v7_ca15_ibe(void); 40 void cpu_v7_bugs_init(void); 41 42 #endif 43