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 726acfcb9b77..6451ad630174 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); | |||
41 | onchip_setup(fpu); | 41 | onchip_setup(fpu); |
42 | onchip_setup(dsp); | 42 | onchip_setup(dsp); |
43 | 43 | ||
44 | #ifdef CONFIG_SPECULATIVE_EXECUTION | ||
45 | #define CPUOPM 0xff2f0000 | ||
46 | #define CPUOPM_RABD (1 << 5) | ||
47 | |||
48 | static void __init speculative_execution_init(void) | ||
49 | { | ||
50 | /* Clear RABD */ | ||
51 | ctrl_outl(ctrl_inl(CPUOPM) & ~CPUOPM_RABD, CPUOPM); | ||
52 | |||
53 | /* Flush the update */ | ||
54 | (void)ctrl_inl(CPUOPM); | ||
55 | ctrl_barrier(); | ||
56 | } | ||
57 | #else | ||
58 | #define speculative_execution_init() do { } while (0) | ||
59 | #endif | ||
60 | |||
44 | /* | 61 | /* |
45 | * Generic first-level cache init | 62 | * Generic first-level cache init |
46 | */ | 63 | */ |
@@ -261,4 +278,6 @@ asmlinkage void __init sh_cpu_init(void) | |||
261 | */ | 278 | */ |
262 | ubc_wakeup(); | 279 | ubc_wakeup(); |
263 | #endif | 280 | #endif |
281 | |||
282 | speculative_execution_init(); | ||
264 | } | 283 | } |