diff options
Diffstat (limited to 'arch/arm/include/asm/virt.h')
| -rw-r--r-- | arch/arm/include/asm/virt.h | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/arm/include/asm/virt.h b/arch/arm/include/asm/virt.h index 50af92bac737..4371f45c5784 100644 --- a/arch/arm/include/asm/virt.h +++ b/arch/arm/include/asm/virt.h @@ -29,6 +29,7 @@  #define BOOT_CPU_MODE_MISMATCH	PSR_N_BIT  #ifndef __ASSEMBLY__ +#include <asm/cacheflush.h>  #ifdef CONFIG_ARM_VIRT_EXT  /* @@ -41,10 +42,21 @@   */  extern int __boot_cpu_mode; +static inline void sync_boot_mode(void) +{ +	/* +	 * As secondaries write to __boot_cpu_mode with caches disabled, we +	 * must flush the corresponding cache entries to ensure the visibility +	 * of their writes. +	 */ +	sync_cache_r(&__boot_cpu_mode); +} +  void __hyp_set_vectors(unsigned long phys_vector_base);  unsigned long __hyp_get_vectors(void);  #else  #define __boot_cpu_mode	(SVC_MODE) +#define sync_boot_mode()  #endif  #ifndef ZIMAGE  | 
