diff options
Diffstat (limited to 'arch/sh/kernel/cpu/init.c')
| -rw-r--r-- | arch/sh/kernel/cpu/init.c | 19 | 
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/sh/kernel/cpu/init.c b/arch/sh/kernel/cpu/init.c index 726acfcb9b7..6451ad63017 100644 --- a/arch/sh/kernel/cpu/init.c +++ b/arch/sh/kernel/cpu/init.c @@ -41,6 +41,23 @@ __setup("no" __stringify(x), x##_setup);  onchip_setup(fpu);  onchip_setup(dsp); +#ifdef CONFIG_SPECULATIVE_EXECUTION +#define CPUOPM		0xff2f0000 +#define CPUOPM_RABD	(1 << 5) + +static void __init speculative_execution_init(void) +{ +	/* Clear RABD */ +	ctrl_outl(ctrl_inl(CPUOPM) & ~CPUOPM_RABD, CPUOPM); + +	/* Flush the update */ +	(void)ctrl_inl(CPUOPM); +	ctrl_barrier(); +} +#else +#define speculative_execution_init()	do { } while (0) +#endif +  /*   * Generic first-level cache init   */ @@ -261,4 +278,6 @@ asmlinkage void __init sh_cpu_init(void)  	 */  	ubc_wakeup();  #endif + +	speculative_execution_init();  }  | 
