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 | } |
